繁体   English   中英

Python函数参考对象属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM