zoukankan      html  css  js  c++  java
  • 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)#引用内部方法的特殊语法
    

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

  • 相关阅读:
    人月神话阅读笔记之二
    人月神话阅读笔记之三
    人月神话阅读笔记之一
    清楚浮动的10种方法
    WEB颜色值得设定
    文件上传 FileReader()
    Git学习笔记(三)
    Git学习使用笔记(二)
    Git使用学习笔记 (一)
    小知识点(JS)
  • 原文地址:https://www.cnblogs.com/xiaobeibei26/p/6438020.html
Copyright © 2011-2022 走看看