我想自动添加一个属性到一些继承自类A的对象中。 这些对象只能从另一个包含我要复制的属性的对象实例化:
class A(object):
pass
class B(A):
pass
class C(object):
pass
class MyClass(MySuperClass):
def __init__(self):
MySuperClass.__init__(self)
b = B()
hasattr(b, "my_attribut") # True
c = C()
hasattr(c, "my_attribut") # False, doesn't inherit from A
b = B() # Raise error, this object can't be instantiated here.
也许用元类?你知道吗
类属性
如果您想添加一个类属性,那么您确实可以使用一个只影响子类行为的元类。你知道吗
实例属性
如果您希望您的对象有一个实例属性(如果它们的类是从
A
继承的),那么元类就不会这样做。在A.__init__
中可以有一个条件语句。你知道吗相关问题 更多 >
编程相关推荐