zoukankan      html  css  js  c++  java
  • 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'
    
  • 相关阅读:
    2019北航软工暑期班作业-IDE的安装与初步使用(Visual Studio版)
    java——线性表接口实现
    CCF——相邻数对201409-1
    CCF——门禁系统201412-1
    CCF——图像旋转201503-1
    CCF——数列分段201509-1
    CCF——数位之和201512-1
    CCF——折点计数201604-1
    Java String简单知识点总结
    無题
  • 原文地址:https://www.cnblogs.com/monkey-code/p/13160629.html
Copyright © 2011-2022 走看看