Boole bağlamında bir Python tuple kullanıldığında, True
kabul edilir ve sadece boş değilse.Boolean bağlamında Python adında birleştirme
Aynı şey collections.namedtuple
örneklerinde de geçerlidir?
Boole bağlamında bir Python tuple kullanıldığında, True
kabul edilir ve sadece boş değilse.Boolean bağlamında Python adında birleştirme
Aynı şey collections.namedtuple
örneklerinde de geçerlidir?
Teoride, ama yapamazsınız adında bir ad-türünü oluşturduğunuzda, ön taraftaki öğe sayısını belirtmeniz gerektiğinden, herhangi bir kullanışlı adlandırılmış boş kopyanın boş bir örneğini oluşturun. Bu yüzden boş bir isim parçacığına sahip olmanın tek yolu, her zaman boş olan bir ad-türüne sahip olmaktır; bu durumda, hiçbir amaca hizmet etmez.
Evet, ancak genel olarak, muhtemelen her zaman bunun gerçekleşmeyeceğini göreceksiniz, çünkü her değer için namedtuple
. Hiçbir isim belirtme boş bir tanımlama grubu türünü oluşturmak için olanak sağlayacak, ancak örneklerinin her zamanboş olacağı için böyle bir tip, çok faydalı olmaz: evet,
>>> empty = collections.namedtuple("empty", [])
>>> empty()
empty()
>>> bool(empty())
False
Evet. Bunu, adlandırılmış bir tuple sınıfını inceleyerek görebilirsiniz. Bunu yapmak için
bir yolu Python 3.3 veya üstü ya da namedtuple()
için verbose=True
seçeneğinde ._source
kullanarak adlandırılmış tuple sınıfının kaynak kodunu görüntülemek etmektir. Adlandırılmış tupllerin tuple
'u uzattığını ve __nonzero__()
veya __len__()
yöntemlerini geçersiz kılmadığını göreceksiniz. Bu, düşündüğünüz gibi, tuple
ile aynı mantığı kullandıkları anlamına gelir.
Ayrıca, adlandırılmış bir tuple sınıfının __nonzero__
ve __len__
özniteliklerini de kontrol edebilirsiniz. Sen __len__
nitelik tuple
için aynı olduğunu hiçbir __nonzero__
nitelik tanımlanmış olduğunu görüyoruz ve olacaktır: kullanışlı,
>>> A = namedtuple('A', ['x'])
>>> A.__len__ == tuple.__len__
True
Yani, netleştirmek için 'namedtuple's hep truthy nelerdir? – user200783
@PaulBaker: Evet, çünkü her zaman muaftırlar. – BrenBarn