我正在用python学习OOP,并遇到了以下代码:
class Person:
def __init__(self, first_name):
self.first_name = first_name
# Getter function
@property
def first_name(self):
return self._first_name
# Setter function
@first_name.setter
def first_name(self, value):
if not isinstance(value, str):
raise TypeError('Expected a string')
self._first_name = value
即使我们设置的属性称为firstname
,而我们得到的属性称为_firstname
,此代码也可以工作。我想知道这两个属性在python中是否相同还是被认为是不同的?为何在出现这种似乎不一致的情况后,该代码仍能正常工作?