继承类属性(python)
问题描述:
有没有办法完成这样的事情?我在Python的工作,但我不知道是否有办法做到这一点在任何编程语言...继承类属性(python)
class Parent():
class_attribute = "parent"
@staticmethod
def class_method():
print __class__.class_attribute
class Child(Parent):
class_attribute = "child"
我知道我不能直接调用__class__
。它只是一个例子,因为我想要类似于对类本身的引用,因为我希望子类根据其class_attribute采取不同的行为。
然后应该输出应该是这样的:
> Parent.class_method()
"parent"
> Child.class_method()
"child"
我知道同样的技术可以通过实例来完成。但我不想创建实例,因为有时__init__
方法中的代码可能会很长并且要求很高,如果我经常想要调用class_method
,我将不得不创建大量仅用于此一方法调用的实例。并且因为class_attribute
和class_method
是静态的,不会被实例更改。
答
呃,听起来像是你想有一个类方法,这并不奇怪与classmethod
装饰完成:
class Parent(object):
class_attribute = "parent"
@classmethod
def class_method(cls):
print cls.class_attribute
class Child(Parent):
class_attribute = "child"
>>> Parent.class_method()
parent
>>> Child.class_method()
child
或者,正如bgporter指出的那样,你可以直接使用属性来完成,而不需要任何方法。
答
这只是工作在Python,有或没有创建实例:
>>> class Parent(object):
... attribute = "parent"
...
>>> class Child(Parent):
... attribute = "child"
...
>>> p = Parent()
>>> p.attribute
'parent'
>>> c = Child()
>>> c.attribute
'child'
>>> Parent.attribute
'parent'
>>> Child.attribute
'child'
>>>
你只是在谈论'静态'功能? – Tigran 2012-02-06 20:09:17