gpt4 book ai didi

python - 是否有实例方法

转载 作者:行者123 更新时间:2023-12-01 05:36:36 25 4
gpt4 key购买 nike

考虑以下示例:

class Foo(object):
def bar(self):
return "bar"

class Bar1(object):
def __init__(self):
self.foo = Foo()
def bar(self):
return self.foo.bar()

class Bar2(object):
def __init__(self):
self.bar = Foo().bar

Bar1().bar() == Bar2().bar()

应该选择 Bar1 和 Bar2 中的哪一个?替代方案的优点/缺点是什么?

我想问的是,有一个实例只有一个方法,该方法在另一个实例中使用。我应该明确表示它确实是一种“方法”(Bar1),还是应该保存一个函数调用和一些复杂性(Bar2)?

最佳答案

Bar2 显然是一种 hack(可能是为了减少源代码长度,也可能是为了减少调用开销)。我不会这样做。

原因:

Bar2().barFoo 的一个方法(这很令人惊讶,因此没有好的风格)。您可以通过查看 Bar2().bar.im_self 自行检查。

② 子类无法重写Bar2的方法。您可以通过这种方式禁用类的一项有值(value)的功能。

③ 稍后更改 Bar 的 foo 只会在 Bar1 中产生预期的效果,而在 Bar2 中则会产生指向 foo 方法的指针原来的 foo 仍将使用。

关于python - 是否有实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847411/

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