SORU
12 AĞUSTOS 2009, ÇARŞAMBA


Bir temel sınıf'un arama classmethod Python

Aşağıdaki kodu göz önünde bulundurun:

class Base(object):

    @classmethod
    def do(cls, a):
        print cls, a

class Derived(Base):

    @classmethod
    def do(cls, a):
        print 'In derived!'
        # Base.do(cls, a) -- can't pass `cls`
        Base.do(a)

if __name__ == '__main__':
    d = Derived()
    d.do('hello')

> $ python play.py  
> In derived! 
> <class '__main__.Base'> msg

Derived.do Base.do arayayım mı? Normalde eğer bu normal bir nesne yöntemi ise super veya sınıf adı bile doğrudan kullanırdım, ama görünüşe göre temel sınıf classmethod aramak için bir yol bulamıyorum. Yukarıdaki örnekte, Base.do(a) Baskı Base Sınıf yerine Derived sınıf.

CEVAP
12 AĞUSTOS 2009, ÇARŞAMBA


super(Derived, cls).do(a)

EDİTOh, bir dakika bekle... tam olarak ne istediğinin belli değil. Bu türetilmiş bir sınıf yöntemi temel sınıfın sürüm kodu, çağırmak.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012