我想将一些属性和方法添加到各种类中。我必须添加的方法和属性是相同的,但不是分配它们的类,所以我想构造一个类,为参数中给定的类分配新的方法和属性。我尝试了这个,但它没有用:(我知道尝试为自己分配一些东西是一种非常错误的方法,它只是为了展示我想做什么)
class A:
def __init__(self):
self.a = 'a'
def getattA(self):
return self.a
class B:
def __init__(self, parent) :
self = parent
# This is working :
print self.getattA()
def getattB(self):
return self.getattA()
insta = A()
instb = B(insta)
# This is not working :
print instb.getattB()
结果是:
a
Traceback (most recent call last):
File "D:\Documents and settings\Bureau\merge.py", line 22, in <module>
print instb.getattB()
File "D:\Documents and settings\Bureau\merge.py", line 16, in getattB
return self.getattA()
AttributeError: B instance has no attribute 'getattA'
我希望在调用 instb.gettattB() 时得到 ‘a’
要恢复,我想从 A 类继承 B 类,在 B 类的参数中给出 A 类,因为我的 B 类将是各种类的子类,而不总是 A。
原文由 user1062526 发布,翻译遵循 CC BY-SA 4.0 许可协议
最佳答案在评论中,它对我很有用,所以我决定在答案中展示它(感谢 sr2222):在 Python 中动态声明继承的方法是 type() 内置函数。对于我的例子:
代码返回:
我的类 C inerhite 类 A 和类 B 的属性和方法,我们添加了 c 属性。随着 C 的实例化 (instc = C(‘args’)) A 的 init 是调用而不是 B。
对我来说非常有用,因为我必须在不同的类上添加一些属性和方法(相同)。