python – 是否可以声明一个类变量,它将产生两个其他类变量的总
发布时间:2020-12-20 12:00:05 所属栏目:Python 来源:网络整理
导读:class my_class(object): def __init__(self): self.ref = 0 self.ask = 0 self.added = self.ref + self.ask inst = my_class()inst.ref = 5inst.ask = 7print(inst.ref + inst.ask)print(inst.added) 我想打印(inst.added)返回12但它返回0 解决方法 实际上
class my_class(object): def __init__(self): self.ref = 0 self.ask = 0 self.added = self.ref + self.ask inst = my_class() inst.ref = 5 inst.ask = 7 print(inst.ref + inst.ask) print(inst.added) 我想打印(inst.added)返回12但它返回0 解决方法
实际上,在创建类之后调用名称为__init__的方法(cf __new__).这意味着当你这样做
inst = my_class() 无论你以后做什么,inst.added已经等于0. 你可以做的是定义另一种方法,在你需要它时做你需要的(在实例化之后).例如. class my_class(object): def __init__(self): self.ref = 0 self.ask = 0 @property def added(self): return self.ref + self.ask def add(self): return self.ref + self.ask 最后 >>> inst = my_class() >>> inst.ref = 5 >>> inst.ask = 7 >>> inst.added # briefly,the property decorator does the job of calling the callable for you 12 >>> inst.add() # while here,you do call the callable 12 >>> inst.ref = 7 >>> inst.added 14 >>> inst.add() 14 但是,请记住,即使您可以访问添加为公共属性,如果您尝试直接设置它(在Python 2和版本3中),也会出现错误,即 >>> inst.added = 15 返回以下错误 Traceback (most recent call last): File "<pyshell#XX>",line YY,in <module> inst.added = 15 AttributeError: can't set attribute (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |