gpt4 book ai didi

python - 从实例本身调用实例变量的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:40 25 4
gpt4 key购买 nike

我有一种情况,我希望能够从实例本身调用实例变量的常用方法。这并不是程序运行所必需的;但是,输入 bar.baz() 比输入 bar.foo.baz() 更方便。

处理此问题的最 Pythonic/可读/最常见的方法是什么?我在想我会写一个函数装饰器;但是,我对其他想法持开放态度。该解决方案还必须是继承友好的。

示例:

class Foo (object) :
def baz (self) :
return 324

class Bar (object) :
def __init__ (self) :
self.foo = Foo()

# This is the current ugly solution.
# It also results in an extra function call.
def baz (self, *args, **kw) :
return self.foo.baz(*args, **kw)

bar = Bar()
print bar.foo.baz()
print bar.baz()

这适用于 Python 2.7.3,仅供引用。

最佳答案

你可以只做所谓的mixin。您创建了一个真正没有个人状态的类,但带有您想要“混合”到另一个类的通用功能:

class FooMixin(object) :
def baz (self) :
return 324

class Bar(object, FooMixin):
def __init__ (self):
pass

bar = Bar()
bar.baz()

*或者使用@Joachim 在其他答案中建议的组合。

关于python - 从实例本身调用实例变量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11896009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com