python 里面的@property

class Person:
    def __init__(self, name):
        self.name = name
        

    @property
    def name(self):
        print("get name called")
        return self._name

    @name.setter
    def name(self, name):
        print("set name called")
        if not isinstance(name, str):
            raise TypeError("Expected a string")
        self._name = name

person = Person("Tom")
print(person.name)

这里的问题就是打印出来的是tom 后面的@property 根本没有执行,我想说的是为啥没有执行呢?
我在网上看到的后面的都会执行,这里的settrt 和getter 有啥区别

阅读 2.9k
2 个回答

是代码的问题:__init__ 函数里,self.name = name 应该是 self._name = name

你用的是python2吧,试试python3

$ python3 class_test.py 
set name called
get name called
Tom
$ python class_test.py 
Tom
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题