[英]Python Function Reference Object Attributes
如何将函数传递给访问对象范围内的属性的对象?
这有效:
class Foo():
def __init__(self, some_func):
self.some_func = some_func
self.stats = 'some stats'
def execute(self):
return self.some_func()
def bar():
return x.stats
x = Foo(bar)
x.execute()
但我不喜欢如果重命名对象,则必须写一个新的bar
。
我实际上想写的更像是:
class Foo():
def __init__(self, some_func):
self.some_func = some_func
self.stats = 'some stats'
def execute(self):
return self.some_func()
def bar():
return self.stats
x = Foo(bar)
x.execute()
并让self
in bar()
从传递给它的任何Foo对象中获取统计信息,而不管其命名方式如何。 我想不出一个聪明的方法来做到这一点。
有没有好的方法可以引用Foo对象的属性而不更改Foo? 或者,您可以通过使Foo对some_func()
的调用更智能来启用此功能吗? 这在python 2和3之间有所不同吗?
为什么不能在运行时传递对象?
class Foo():
def __init__(self, some_func):
self.some_func = some_func
self.stats = 'some stats'
def execute(self):
return self.some_func(self)
def bar(self_):
return self_.stats
x = Foo(bar)
x.execute()
上面的功能bar()
之所以起作用,是因为在python中,只要您知道属性的名称,什么都不是真正的私有的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.