gpt4 book ai didi

python - 是否应该在 __init__ 中初始化所有成员变量

转载 作者:IT老高 更新时间:2023-10-28 21:42:56 29 4
gpt4 key购买 nike

也许这更像是一个风格问题而不是技术问题,但我有一个包含多个成员变量的类,我想让它工作,以便在用户第一次创建类的实例时初始化一些成员变量(即在 __init__ 函数中)并且我希望从稍后将调用的成员函数的参数定义其他成员变量。所以我的问题是我应该在 __init__ 函数中初始化所有成员变量(并将稍后定义的变量设置为虚拟值)还是在 __init__ 函数中初始化一些还有一些在以后的功能中。我知道这可能很难理解,所以这里有几个例子。

此示例在 __init__ 函数中将 var3 初始设置为 0,然后在 my_funct 函数中设置为所需的值。

class myClass(object):
def __init__(self,var1,var2):
self.var1=var1
self.var2=var2
self.var3=0

def my_funct(self,var3):
self.var3=var3

在这个例子中,var3 根本没有在 __init__ 函数中定义

class myClass(object):
def __init__(self,var1,var2):
self.var1=var1
self.var2=var2

def my_funct(self,var3):
self.var3=var3

我不认为任何一种方式都会产生很大的不同(可能在内存使用方面略有不同)。但我想知道其中一个是否由于某种原因比另一个更受欢迎。

最佳答案

在面向对象的编程中,开发人员需要确保对象在实例化后和方法完成后始终处于一致状态。除此之外,您可以根据需要自由开发类(请牢记某些原则与子类化/覆盖等)。

Pylint 等工具当您在 __init__ 之外设置实例变量时会发出警告。可以说,在 __init__ 中设置所有实例变量更简洁,但这并不是必须始终遵守的规则。

关于python - 是否应该在 __init__ 中初始化所有成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661448/

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