2010-08-29 29 views

cevap

27

Statik ölçüm yöntemini bir classmethod ile değiştirin. Bu, çağrıldığında sınıfa geçecektir, böylece sınıf adını bundan alabilirsiniz. sınıf bilgileri bulmak gerekiyorsa

class Bar(object): 

    @classmethod 
    def bar(cls): 
     # code 
     print cls.__name__ 

class Foo(Bar): 
    # code 
    pass 

>>> Bar.bar() 
Bar 

>>> Foo.bar() 
Foo 
+1

Çok teşekkürler Dave! –

+2

Bu, soruya cevap vermiyor. Soru, statik bir yöntemle nasıl yapılacağıydı. – sebix

2

, uygun bir yol @classmethod kullanmaktır.

class Bar(object): 
    @classmethod 
    def bar(cls): 
     # code 
     print(cls.__name__) 

class Foo(Bar): 
    # code 
    pass 

Şimdi bar yöntem arayanın gerçek sınıftır cls olarak sınıfa bir referansı vardır. Ve kodda gösterildiği gibi, cls.__name__, aradığınız sınıfın adı adıdır.

>>> Foo.bar() 
Foo 
>>> Bar.bar() 
Bar 
+0

Zaten cevaplandı, ama yine de teşekkürler! –