【发布时间】:2012-03-12 13:21:38
【问题描述】:
我想在各种类中添加一些属性和方法。我必须添加的方法和属性是相同的,但不是分配它们的类,所以我想构造一个类,为参数中给定的类分配新的方法和属性。 我试试这个,但它不工作: (我知道尝试为自己分配一些东西是一种非常错误的方式,它只是为了显示我想要做什么)
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。
【问题讨论】:
-
我不明白你在做什么,你能提供一个完整的例子和预期的结果吗?不过,至少如果您计划支持 Python 2.X,请使用
class A(object)和class B(object)。 -
#这不起作用 - 它怎么不起作用?
-
请贴出运行代码时得到的输出。
-
In [5]: dir(instb) Out[5]: [
__doc__,__init__,__module__, 'getattB'] 如果您使用 instb 对象,则没有 getatt 方法想要它,你应该从 A 类继承 B 类 -
self 只能在
__init__方法中访问。您将不得不使用self.self = parent并使用self.self.getatt()