python实例变量初始化_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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值