我有两个类。 a
和b
。Python类对象属性引用
在a
的方法之一中,我创建了一个类b
的对象。类b
属性之一具有一个功能。所以说我给了它一个随机函数,但是b
类的这个函数是否可以访问类a
的属性?即使我没有直接作为参数传递它?
class b:
def __init__(self):
self.attribute_function = None
class a:
def __init__(self):
self.temp = 10
self.counter = 0
def temp(self):
obj = b()
obj.attribute_function = lambda self: self.counter < self.temp
return obj.attribute_function()
if __name__ == "__main__":
#pass
obj = a()
print obj.temp()
在上面的例子中,我试图提供一个非常简单的例子,你要是跑不过它,它不工作...
修改过的代码,类a
应该是这样的:
class a:
def __init__(self):
self.temp = 10
self.counter = 0
def temp(self):
obj = b()
obj.attribute_function = lambda args: self.counter < self.temp
return obj.attribute_function(1) # i added this 1 to fill in arg
我对不好的示例代码表示歉意。我正在研究一个相当复杂的项目并且通过SO进行解释非常困难。但为了纠正我的错误,我的原始代码中'attribute_function'的'self'参数是完全不同的另一个参数。 'attribute_function'中的'self'引用完全来自创建者类的属性。 – user1234440
请参阅我上面修改的代码;与你一起帮助我得到它。但只是为了确认,引用该类'a'的属性而不隐式地传入参数是正确的?这安全吗? – user1234440
>但只是为了确认,引用该类的属性而不隐式传递参数的工作是否正确?这是安全吗?<它应该工作,这称为'关闭'。如果您需要,请考虑两次。唯一的想法我会做:'obj.attribute_function = lambda args,self = self:self.counter
warvariuc