# person2.py
class person:
  def __init__(self,name='', age=0):
    self._name = name
    self._age = age
  @property
  def age(self):
    return self._age
  @age.setter
  def age(self, age):
    if 0 < age <= 150:
      self._age = age
  def set_age(self, age):
    if 0 < age <= 150:
      self._age = age
  def __str__(self):
    return "person(%s , %s)" % (self._name, self._age)
  def __repr__(self):
    return str(self)
然后
>>> import person2 as pe
>>> p = pe.person('Lia' , 20)
>>> p
person(Lia, 20)
>>> p.age
20
>>> p.age = 33
>>> p.age
33
>>> p
person( Lia, 20) # 为什么这里不会改变?
>>> p.set_age(100)
>>>p
person(Lia, 100)
>>>p.age
33 # 不是100 么?
书上用的 python3 我在 fedora 上用的 python2.7
是这个原因吗?
|  |      1regex      2015-01-08 18:42:44 +08:00  1 python3下两个问题都不存在。。 输出为person( Lia, 33)和100 | 
|  |      2lcqtdwj      2015-01-08 19:00:50 +08:00 class person(object) |