【发布时间】:2021-01-16 16:40:50
【问题描述】:
class Employee:
def __init__(self, name):
self.name = name
def getName(self):
return self.name
@property
def getNameAgain(self):
return self.name
person = Employee("John")
print(person.getName()) #John <--(calling method)
print(person.name) #John <--(using @property)
所以我使用 getName() 得到了相同的结果,那么为什么我们在 getNameAgain() 中使用 @property 装饰器呢?我可以知道使用什么更好/更可取吗?提前谢谢!
【问题讨论】:
-
既然可以使用属性,为什么还要使用get方法?顺便说一句,您的
print(person.name)没有使用属性。它只是直接访问属性。 -
注意,理解这一点很重要,如果您的 getter/setter 所做的一切都是nothing,那么您将只使用常规属性,即@987654323 @ 然后直接使用
my_instance.name。如果,稍后您想要更改获取/设置的行为,那么您可以进行封装,而无需编写 getter 和 setter 的样板。换句话说,关键是在你的例子中,在 Python 中,你不会使用任何一个
标签: python oop properties decorator