私有方法
在某些时候,会看到有一种方法命名比较特别,是以“__”双划线开头的,将这类命名的函数/方法称之为“私有函数”。
所谓私有函数,就是:
-
私有函数不可以从它们的模块外面被调用
-
私有类方法不能够从它们的类外面被调用
-
私有属性不能够从它们的类外面被访问
例如:
class People(object):
def __init__(self):
self.name = "张三"
self.__age = 52
def ser(self):
print("公有方法")
def __ms(self):
print("私有方法")
people = People()
print(people.name)
#输出 张三
print(people.age)
#出错:AttributeError: 'People' object has no attribute 'age'
#因为age变为私有属性所以访问不到
people.__ms()
#出错:AttributeError: 'People' object has no attribute '__ms'
#因为__ms是私有方法所以访问不到
因为python是弱类型语言。所以想访问到也是可以的(失去了设为私有的初衷,不介意用)
print(people.__dict__)
#找到实例化对象中的所有属性包括私有属性
print(people._People__age)
#输出 52
可以在类中调用私有方法与属性
class People(object):
def __init__(self):
self.name = "张三"
self.__age = 52
self.__ms()
def ser(self):
print("公有方法")
def __ms(self):
print("私有方法")
people = People()
#输出 私有方法