首页 > 解决方案 > 你应该如何将参数传递给__init__?

问题描述

来自 C++ 背景,我对 Python 的变量使用,特别是类对象的创建有点困惑。考虑下面的代码:

class Cat(object):
    """My pet cat"""

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return "{0}, {1}".format(self.name, self.age)


class Age(object):

    def __init__(self, a):
        self.age = a

    def __repr__(self):
        return "{0}".format(self.age)

输出:

>>> name='milo'
>>> age =4
>>> m = Cat(name, age)
>>> print(m)
milo, 4
>>> age +=1
>>> print(m)
milo, 4

>>> name='rex'
>>> age =Age(4)
>>> rex = Cat(name, age)
>>> print(rex)
rex, 4
>>> age.age += 55
>>> print(rex)
rex, 59

由于某种原因rex变老,并milo保持 4 岁。因此,如果我制作另一只猫来代替旧猫:

>>> age.age -=55
>>> spike = Cat('spike', age )
>>> print(spike)
spike, 4
>>> print(rex)
rex, 4

两人spikerex现在年龄相同。

我应该如何编码CatAge类,以免我不小心让老猫恢复活力?

为什么'Milo'在做的时候不会老一岁age +=1

标签: pythonclassobjectparametersclass-constructors

解决方案


推荐阅读