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

  • ghosti66

    ghosti66

    27 AĞUSTOS 2006
  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007
  • SellerDp

    SellerDp

    27 EKİM 2009