加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读