8 Mart 2010, PAZARTESİ
Nasıl varsayılan davranışı bozmadan Python in __getattr__ tutacağım?
Güzel birşeyler yapmak için bir sınıf __getattr__
yöntemi geçersiz kılmak istiyorum ama varsayılan davranışı kırmak istemiyorum.
Bunu yapmak için doğru yolu nedir?
CEVAP
8 Mart 2010, PAZARTESİ
__getattr__
geçersiz olursa adını eşleşen örnek öznitelikleri eğer orada hiçbir sorun -- __getattr__
sadece son çare olarak adlandırılır, yani olmalıdır. foo.bar
, erişim örneğin, __getattr__
foo
nitelik bar
adı varsa adı verilecek. Eğer öznitelik işlemek istemiyorum, AttributeError
zam:
class Foo(object):
def __getattr__(self, name):
if some_predicate(name):
# ...
else:
# Default behaviour
raise AttributeError
__getattr__
, __getattribute__
ilk adı verilecek aksine ancak, (yeni stil sınıflar için nesne devralan bu sadece çalışır yani). Bu durumda, varsayılan davranış gibi çok koruyabilirsiniz:
class Foo(object):
def __getattribute__(self, name):
if some_predicate(name):
# ...
else:
# Default behaviour
return object.__getattribute__(self, name)
Bunu Paylaş:
Nasıl Python fonksiyonu dekoratörler z...
Nasıl tek bir ifadede iki Python sözlü...
&; Az Şaşkınlık " " Python: Değiş...
Nasıl Python ile bir dizinin tüm dosya...
Nasıl (şap) Python bir satır kaldırabi...