Loading

Python 私有属性和私有方法

类的私有属性和方法

Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有。

Python默认的成员函数和成员变量都是公开的,类的私有属性指只有在类的内部使用的属性或方法,表现形式为以“__“ 属性名或方法名以双下划线开头。

class Test(object):
    __count = 0   # 私有属性 __count

    def get_count(self):
        return self.__count   # 类的内部可以使用私有属性

    def set_count(self, value):
        if self.__check_value(value):   # 在类的内部调用类的私有方法
            self.__class__.__count = value

    def __check_value(self, value):   # 定义类的私有方法 检查参数
        if isinstance(value, int):
            return True


a = Test()
print(a.get_count())
a.set_count(100)
print(a.get_count())
#a.__check_value(10)    # 调用私有方法会报错
#print(a.__count)			# 直接访问私有属性也会报错

应用场景

对于一些敏感的数据,我们不希望直接被的函数调用,或者不希望草率的直接 object.key = value 来修改,我们可以选择将属性声名为私有的,这样从外部时无法访问该属性的,也就不能修改了,但是依然可以修改属性字典的方法来修改。

# 当然 可以使用 @proprety 
class Person(object):
    __name = 'Monkey'

    def update_name(self, name):
        self.__name = name

    def get_name(self):
        return self.__name


p = Person()
p.update_name('BlackMonkey')
print(p.get_name())   # BlackMonkey
print(p.__name)   # 报错 AttributeError: 'Person' object has no attribute '__name'
posted @ 2020-06-18 22:53  StKali  阅读(2975)  评论(0编辑  收藏  举报