• Python面向对象之私有方法(4)


    类里面有很多成员修饰符,用来修饰各种属性

    (1)私有属性,只有内部的方法可以访问

    class Foo:
        xo = 'xo'#表明是公共的,内部外部都可以访问
        __ox = '私有属性'#私有属性,只有内部方法可以访问
        def __init__(self):
        self.__name = 'Jay'#私有属性,只有内部方法可以访问
      def fetch(self,bk): 
        print(bk) print(Foo.__ox)#里面也可以写self.__ox
    #print(Foo.__xo)#前面加了两个下划线,是私有属性,这样调用会报错,只有内部的方法可以访问
    obj=Foo()
    obj.fetch('bb')

      结果如图,

    如果子类继承了父类Foo,在子类的方法里面调用了父类的私有属性,也是访问不了的,会报错

    如果在方法前面加了两个下划线也是不能被实例访问的,只能间接访问

    class Foo:
        xo = 'xo'#表明是公共的,内部外部都可以访问
        __ox = '私有属性'#私有属性,只有内部方法可以访问
        def __init__(self):
    
            self.__name = 'Jay'#私有属性,只有内部方法可以访问
        def __fetch(self,bk):#私有方法
            print(bk)
            print(Foo.__ox)#里面也可以写self.__ox
        def fetch(self):
            self.__fetch('bob')
    
    obj= Foo()
    #print(obj.__fetch)这样会报错,这是私有方法
    obj.fetch()
    

      结果如图

    私有属性也有一种特殊方法在外面访问

    class Foo:
        xo = 'xo'#表明是公共的,内部外部都可以访问
        __ox = '私有属性'#私有属性,只有内部方法可以访问
        def __init__(self):
    
            self.__name = 'Jay'#私有属性,默认只有内部方法可以访问
        def __fetch(self,bk):#私有方法
            print(bk)
            print(self.__ox)#里面也可以写self.__ox
        def fetch(self):
            self.__fetch('bob')
    
    obj= Foo()
    print(obj._Foo__name)#引用内部方法的特殊语法
    

      这样就可以访问私有属性了,但这种方法不建议

  • 相关阅读:
    ubuntu1604安装微信
    python中汉字 hash值
    python-json
    lvm 扩展目录大小
    python数据可视化编程实战
    python-数据分析
    爬虫学习路径
    415. 字符串相加-字符串-简单
    43. 字符串相乘-字符串-中等难度
    44. 通配符匹配-动态规划-困难
  • 原文地址:https://www.cnblogs.com/xiaobeibei26/p/6438020.html
Copyright © 2020-2023  润新知