美文网首页
01.14 - 函数私有化

01.14 - 函数私有化

作者: xxxQinli | 来源:发表于2019-01-14 17:20 被阅读0次

    1. 访问权限

    • a. 私有的: 在类的外部不可以使用,也不可以继承
    • b. 保护的: 在类的外部不可以使用,可以继承
    • c. 公开的: 在类的外部可以使用, 也可以被继承

    2. python的私有化

    • python中属性和方法权限只有公开,但是提供了另一种私有化的方式

    • python中在属性或者方法名前加(两个下划线开头),就可以将属性或者方法变成私有的(注意,只能两个下划线开头,不能两个下划线结尾)

    • 私有的属性和方法只能在类的内部使用,不能在类的外部使用
      看属性和方法是否需要在外部用,不需要,就私有化

    3. python私有化的原理

    在名字前是_的属性和方法前再加'类名'去保存属性和方法,相当于做一个假的私有化,把属性名改了,因为名字改了,这样就没法直接调用两个下划线

    """
    class Ql_Person:  # 
        """ 
        类说明文档:
        """
        num = 61
        __num2 = 62
    
        def __init__(self, name = '张三', age = 0):
            """
            函数说明文档:
            """
            self.name = name
            self.age = age
            self.__sex = '男'
            
    
        def ql_Eat(self, food):  #
            """
            函数说明文档:
            """
            print(food, self.__sex)
            self.__ql_Run()
        
        @classmethod
        def ql_Show_Num(cls):  #
            """
            函数说明文档:
            """
            print('人类的数量%d' % cls.__num2) #在内部可以用
        
        @staticmethod
        def ql_Func1():  #
            """
            函数说明文档:
            """
            print('人类要保护大自然!')
        
        def __ql_Run(self):  #
            """
            函数说明文档:
            """
            print('快跑')
     
    
    
    
    
    def main():
        p1 = Ql_Person()
        print(p1.num)
        ##print(Ql_Person.__num2) 在外面不能用
        print(p1.ql_Eat('面条'))
        print(Ql_Person.ql_Show_Num())
        print(p1.ql_Func1())    
        print(p1.__dict__) # 私有属性可以用过_类__属性来获取,所以python没有真正的私有化,只是把名字改一下,在前面添加了下划线加类名,
    
    
    
    if __name__ == '__main__':
        main()
    

    相关文章

      网友评论

          本文标题:01.14 - 函数私有化

          本文链接:https://www.haomeiwen.com/subject/lzsjdqtx.html