如果@property是属性赋值,那@getter就不用了吗?

来源:8-2 __getattr__、__getattribute__魔法函数

Demin

2020-02-18

好奇的输入@getter试了下,效果是一样的

from datetime import  date,datetime
class User:
    def __init__(self,name,birthday):
        self.name=name
        self.birthday=birthday
        self._age=0

    @property
    def age(self):
        # return datetime.now().year-self.birthday.year
        return self._age

    @age.setter
    def age(self,value):
        self._age=value

    @age.getter
    def age(self):
        return self._age+3

if __name__=="__main__":
    user=User("bobby",date(year=1987,month=1,day=1))
    user.age=32
    print(user.age)

写回答

1回答

Demin

提问者

2020-02-18

谷歌了下,也看了好多例子。发现@property是把类方法变为可读属性,就是说里面的值是如果固定的(比如字符串),那就不能赋值。需要通过@getter才能赋值。

0
1
bobby
是的,这个点我在课程中讲过的吧
2020-02-18
共1条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程