简述:
- func: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。
- _func: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
- __func: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
func:就是public方法
细说:
1. 私有变量
class A(object):
def __init__(self):
self.name='liu'
self._gender='nv'
self.__age=40
p=A()
print(p.name)
print(p._gender)
print(p.__age) # 报错,这样访问不了
print(p._A__age) #可以访问到,私有变量被名称替换
如上所示,无法直接访问实例的私有变量,因为python内部对私有变量进行名称替换。如果想要访问私有变量,建议使用类的函数来实现。私有变量和私有方法存在的一个很重要的原因是不想被实例拿到以至于误修改,起到对变量和方法的修改。
class A(object):
def __init__(self):
self.name='liu'
self._gender='nv'
self.__age=40
#通过定义类方法获取/改变私有变量。
def get_age(self):
return self.__age
- 私有方法
class A(object):
def __init__(self):
self.name='liu'
self._gender='nv'
self.__age=40
def __private1(self):
print('private1')
def _protect1(self):
print('protect1')
class B(A):
def __init__(self):
pass
p=A()
p2=B()
#p.private1() # 私有方法受保护,类实例无法直接调用
#p2.__private1() # 私有方法受保护,子类无法调用
p2._protect1()
- 保护方法
只允许类本身和子类访问,无法被from module import