文章目录
Python对于类的成员没有严格的访问控制限制,这与其他语言有区别。
一、要点
1.通常约定,两个下划线开头的属性时私有的(private)。其他的为公共的(public).
2.类内部可以访问私有属性(方法)。
3.类外部不能直接访问私有属性(方法)。
4.类外部可以通过“_类名__私有属性(方法)名”访问私有属性(方法)。
【注】方法本质上也是属性!只不过是可以通过()执行而已。
二、实例
#私有属性和方法
class student:
__salery="30000" #私有变量
def __init__(self,name,age):
self.name=name
self.__age=age #改变其为私有属性
def __work(self): #私有方法
print("i like work ")
print("i am {0} years old".format(self.__age)) #在类内部调用私有属性
print("my salery is {0}".format(student.__salery)) #在类内部调用私有变量,这里注意一下student.__salery,而不是__salery
a=student("差劲",19)
print(a.name)
#print(a.__age) 报错,私有属性不可访问
print(a._student__age) #这样就可以访问私有属性
print(dir(a))
a._student__work() #在类外部调用私有方法需要注明对象
print(a._student__salery) #在类外部调用私有变量
print(student._student__salery) #两种都OK的
结果:
三、分析
对于class内部的私有属性和方法,可以随意调用。但是出了类外部,就需要用特殊的格式调用。print(a.__age) 报错,私有属性不可访问。
print(a._student__age) #这样就可以访问私有属性。
a._student__work() #在类外部调用私有方法需要注明对象
print(a._student__salery) #在类外部调用私有变量
print(student._student__salery) #这种也可以
总结
私有属性和方法需要用特殊的语法调用,私有变量和属性可以在class内部随意 调用,而出了class则不能调用,需要用特殊的格式调用。