gpt4 book ai didi

python - 如何避免设计成员函数相互依赖的类?

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

假设我有一个名为 Adder 的类:

class adder(object):
def __init__(self, a, b):
self.a=a
self.b=b
self.result = None

def perform_addition(self):
self.result = self.a + self.b
return self.result

如果我实例化这个类:

myAdder = adder(1,2)

那么myAdder.result的值取决于首先调用perform_addition(),否则它将始终保持为None。换句话说,self.result 的值依赖于perform_addition()。如果我们推断,一个更复杂的类可以具有一系列依赖关系:即,您必须在 D 之前调用函数 A、B 和 C,因为它们依次填充下一个函数所需的必要变量。

这是一个糟糕的类设计吗?有什么办法可以补救呢?我认为上面是一个例子:https://en.wikipedia.org/wiki/Sequential_coupling

最佳答案

我认为这完全取决于您想做什么以及您想如何去做。如果您希望 'self.result' 的值静态依赖于 'perform_addition()' ,那么您拥有的代码不一定是坏的。但如果您想要动态依赖关系,那么下面的代码将是一个很好且简单的方法。这样,当通过使用值“a”和“b”实例化类来创建对象时,将自动计算“self.result”。您还可以使用更高级的工具,例如属性、装饰器、描述符等。就像我说的,这完全取决于您想要什么。

Class adder(object):
def __init__(self, a, b):
self.a=a
self.b=b
self.result = self.perform_addition()

def perform_addition(self):
self.result = self.a + self.b
return self.result

关于python - 如何避免设计成员函数相互依赖的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55462963/

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