python3 私有字段

易晨然 2周前 13浏览 0评论

在Python3中,通过在属性名称前面添加两个下划线“__”定义私有字段。私有字段只能在类的内部访问,外部不能通过实例对象直接访问。下面为大家展示一个简单的例子:

class Person:
    def __init__(self, name, age):
        self.__name = name      # 私有字段
        self.age = age
    
    def introduce(self):
        print(f"My name is {self.__name}. I am {self.age} years old.")
        
person = Person("Tom", 18)
print(person.age)               # 输出 18
print(person.__name)            # 报错 AttributeError: 'Person' object has no attribute '__name'
person.introduce()              # 输出 My name is Tom. I am 18 years old.

可以看到,当在外部直接尝试访问私有字段__name时,Python3会抛出AttributeError错误。如果你真的需要访问私有字段,可以调用相应的getter和setter方法。

下面为大家展示一个使用getter和setter方法的例子:

class Person:
    def __init__(self, name, age):
        self.__name = name      # 私有字段
        self.__age = age
         
    def introduce(self):
        print(f"My name is {self.__name}. I am {self.__age} years old.")
         
    def get_name(self):
        return self.__name
         
    def set_name(self, name):
        self.__name = name
         
person = Person("Tom", 18)
person.introduce()              # 输出 My name is Tom. I am 18 years old.
print(person.get_name())        # 输出 Tom
person.set_name("Jerry")
person.introduce()              # 输出 My name is Jerry. I am 18 years old.

通过此方法,可以轻松地访问私有字段。