类的全部成员分为:字段,方法
公有成员,在任何地方都能访问
私有成员,只有在类的内部才能访问
私有成员和公有成员的定义不一样:私有成员命名时,前两个字符是下划线。(特殊成员除外,例如:init、call等)
私有成员和公有成员的访问限制不一样:
静态字段:
公有静态字段:类能够访问,类内部能够访问;派生类中能够访问
私有静态字段:仅类内部能够访问
普通字段:
公有普通字段:对象能够访问;类内部能够访问;派生类中能够访问
私有普通字段:仅类内部能够访问
方法、属性的访问与上述方式类似,即,私有成员只能在类内部使用。
PS:私有成员若非要访问的话,能够经过 对象._类__属性名 来访问。ide
私有普通字段code
# -*-coding:utf-8 -*- __author__ = 'xiaojiaxin' __file_name__ = '成员修饰符' class foo: def __init__(self,name,age,__age): self.name=name self.age=age self._age=age #私有,外部没法直接访问 def show(self): return self._age #间接访问私有字段 obj=foo("jiaxin",10,1) print(obj.name) print(obj.age) print(obj._age) print(obj.show())
私有静态字段对象
class Hoo: __v="123" def __init__(self): pass def show(self): return Hoo.__v @staticmethod def staticmd(): return Hoo.__v #print(Hoo.__v) #静态私有字段不能被外部访问 obj2=Hoo() print(obj2.show()) #静态私有字段能够间接被外部访问 # 123 obi3=Hoo.staticmd() print(obi3) # 123
私有普通方法继承
class qoo: def __f1(self): return "f1" def f2(self): r=self.__f1() return r obj4=qoo() print(obj4.f2()) # f1
派生类不能继承基类的私有字段utf-8
class F: def __init__(self): self.ge="dad1" self.__gene="dad" class S(F): def __init__(self,name): self.name="son" self.__age=10 super(S,self).__init__() def show(self): print(self.name) print(self.__age) print(self.ge) #print(self.__gene) #没法访问父类的私有字段,只能经过继承公有才行 s=S("jiaxin") s.show()