当前位置 博文首页 > m0_51723227的博客:02私有属性

    m0_51723227的博客:02私有属性

    作者:[db:作者] 时间:2021-08-14 15:02

    私有属性

    (即不希望被访问到的属性)

    模式: __ 属性名 __ 方法名

    eg:

    class Women:
        def __init__(self,name):
            self.name = name 
            self.__age = 18
        def secret(self):
            print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
    xiaofang = Women("小芳")
    print(xiaofang.__age)
    

    结果:

    AttributeError:
    'Women' object has no attribute '__age
    

    结果看到不能调用,因为是私有属性。

    class Women:
        def __init__(self,name):
            self.name = name 
            self.__age = 18
        def secret(self):
            print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
    xiaofang = Women("小芳")
    print(xiaofang.secret())
    

    结果:

    小芳不希望别人看到她的年龄是18None
    

    保存在内部的私有属性可以访问

    下面是私有方法:

    class Women:
        def __init__(self,name):
            self.name = name 
            self.__age = 18
        def __secret(self):
            print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
    xiaofang = Women("小芳")
    print(xiaofang.__secret())
    

    结果:

    AttributeError
    'Women' object has no attribute '__secret'
    

    那么,如果想要访问怎么办?

    不推荐访问模式01:

    提示:在实际开发中一般不这样访问

    _类名__私有名

    eg:

    class Women:
        def __init__(self,name):
            self.name = name 
            self.__age = 18
        def __secret(self):
            print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
    xiaofang = Women("小芳")
    print(xiaofang._women__age)
    print(xiaofang._Women__secret())
    

    运行结果:

    18
    小芳不希望别人看到她的年龄是18None
    

    推荐访问模式02:

    通过直接调用父类的公有方法间接*调用私有方法

    class A:
        def __init__(self,name):
            self.name = name
            self.__age = 18
        def __secret(self):
            print("%s才不会告诉你它的年龄是%d岁"%(self.name,self.__age))
        def secret(self):
            print("卧槽,年轻人不讲武德!竟然利用公有方法找私有方法")
            self.__secret()
            
    class B(A):
        def hu(self):
    
            print("你以为我找不到你?")
            self.secret()
    c = B("傻帽")
    c.hu()
    

    运行结果:

    你以为我找不到你?
    卧槽,年轻人不讲武德!竟然利用公有方法找私有方法
    傻帽才不会告诉你它的年龄是18

    新人创作,若有问题,欢迎大佬们的斧正

    cs
    下一篇:没有了