2012-06-07 11 views
10

, ben bir temel sınıf ve türetilmiş bir sınıf var:Bir python @classmethod miras alınabilir mi? Örneğin

>>> class Base: 
... @classmethod 
... def myClassMethod(klass): 
...  pass 
... 
>>> class Derived: 
... pass 
... 
>>> Base.myClassMethod() 
>>> Derived.myClassMethod() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: class Derived has no attribute 'myClassMethod' 

o Türetilmiş sınıf üzerine yazılmasını ve super sınıf yöntemini çağırarak olmadan myClassMethod çağırmak mümkün olabilir mi? Sadece gerekli olduğunda sınıf yönteminin üzerine yazmak istiyorum.

+6

Kişisel 'Derived' sınıfı Base'' elde edilmez. Aksi takdirde bu işe yarayacaktı. –

cevap

17

Evet, onlar miras edilebilir.

Üyeleri devralmak istiyorsanız, miras hakkında python'a söylemeniz gerekir!

>>> class Derived(Base): 
... pass 

Bu nesneden Base sınıf devralma yapmak için iyi bir uygulama (ancak bunu yapmadan çalışır) var:

>>> class Base(object): 
...  ... 
+8

Bu, python 2.x'te sadece iyi bir uygulamadır - 3.x'te her şey 'object'den devraldığı için gereksizdir. – James

+5

@James: true, ama SO hakkındaki çoğu soru hala yaklaşık 2.7 – Eric

+1

'dur. Ya birkaç yıl sonra öyle olduysa? – Daerdemandt

3

Sen alt sınıfta temel sınıfını tanımlamak gerekir:

class Derived(Base): 
    ... 
İlgili konular