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

  • dougownsall

    dougownsall

    7 EKİM 2007
  • Justin Davis

    Justin Davis

    14 Ocak 2008
  • picster

    picster

    20 NİSAN 2006