在班级中,带下划线的“ _attribute”和普通的“ attribute”有什么区别

时间:2019-01-10 17:09:29

标签: python

我正在用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中是否相同还是被认为是不同的?为何在出现这种似乎不一致的情况后,该代码仍能正常工作?

0 个答案:

没有答案