编程语言
首页 > 编程语言> > Python – 应该在__init__中初始化所有成员变量

Python – 应该在__init__中初始化所有成员变量

作者:互联网

也许这更像是一个样式问题,而不是技术问题,但我有一个带有几个成员变量的python类,我想让它工作,以便在用户首次创建类的实例时初始化一些成员变量(即在__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

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

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

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

我不认为任何一种方式都会产生很大的不同(可能在内存使用方面略有不同).但我想知道其中一个是否因为某些原因而优先于另一个.

解决方法:

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

当您在__init__之外设置实例变量时,诸如Pylint之类的工具将发出警告.可以说,在__init__中设置所有实例变量都比较清晰,但这并不是必须始终遵守的规则.

标签:python,oop,instance-variables
来源: https://codeday.me/bug/20190930/1835236.html