SORU
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)

the Python docs for more bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★TheCrono Official Channel★

    ★TheCrono

    3 Mayıs 2014
  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009