2016-03-24 17 views

cevap

2

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.

+0

Yani, netleştirmek için 'namedtuple's hep truthy nelerdir? – user200783

+0

@PaulBaker: Evet, çünkü her zaman muaftırlar. – BrenBarn

3

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 
2

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 
İlgili konular