首页 > 解决方案 > 为什么 Python 有 @property 装饰器时有 __set__ / __get__ 和 __setattr__ / __getattr__?

问题描述

我是 Python 新手,并试图了解 Python OOP。

在 Python 中获取/设置属性的“正确”方法似乎是使用 @property 和 @propertyname.setter 装饰器。

虽然我了解@property 和@propertyname.setter 的使用,但 and 的存在__set__ / __get____setattr__ / __getattr__我感到困惑。如果它们不应该被使用,为什么它们甚至存在?

我仍然无法弄清楚为什么有两对,而不仅仅是一对__set__ / __get__

最后,我们是使用装饰器@property 还是使用方法Property()?Property() 方法需要一个传递对应于属性的getter、setter和deleter的方法

标签: pythonpython-3.xoop

解决方案


推荐阅读