鍍金池/ 問答/Python/ python 里面的@property

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 根本沒有執(zhí)行,我想說的是為啥沒有執(zhí)行呢?
我在網(wǎng)上看到的后面的都會(huì)執(zhí)行,這里的settrt 和getter 有啥區(qū)別

回答
編輯回答
獨(dú)白

你用的是python2吧,試試python3

$ python3 class_test.py 
set name called
get name called
Tom
$ python class_test.py 
Tom
2017年5月13日 03:12
編輯回答
孤巷

是代碼的問題:__init__ 函數(shù)里,self.name = name 應(yīng)該是 self._name = name。

2017年4月7日 23:29