1. 访问权限
- a. 私有的: 在类的外部不可以使用,也不可以继承
- b. 保护的: 在类的外部不可以使用,可以继承
- c. 公开的: 在类的外部可以使用, 也可以被继承
2. python的私有化
-
python中属性和方法权限只有公开,但是提供了另一种私有化的方式
-
python中在属性或者方法名前加(两个下划线开头),就可以将属性或者方法变成私有的(注意,只能两个下划线开头,不能两个下划线结尾)
-
私有的属性和方法只能在类的内部使用,不能在类的外部使用
看属性和方法是否需要在外部用,不需要,就私有化
3. python私有化的原理
在名字前是_的属性和方法前再加'类名'去保存属性和方法,相当于做一个假的私有化,把属性名改了,因为名字改了,这样就没法直接调用两个下划线
"""
class Ql_Person: #
"""
类说明文档:
"""
num = 61
__num2 = 62
def __init__(self, name = '张三', age = 0):
"""
函数说明文档:
"""
self.name = name
self.age = age
self.__sex = '男'
def ql_Eat(self, food): #
"""
函数说明文档:
"""
print(food, self.__sex)
self.__ql_Run()
@classmethod
def ql_Show_Num(cls): #
"""
函数说明文档:
"""
print('人类的数量%d' % cls.__num2) #在内部可以用
@staticmethod
def ql_Func1(): #
"""
函数说明文档:
"""
print('人类要保护大自然!')
def __ql_Run(self): #
"""
函数说明文档:
"""
print('快跑')
def main():
p1 = Ql_Person()
print(p1.num)
##print(Ql_Person.__num2) 在外面不能用
print(p1.ql_Eat('面条'))
print(Ql_Person.ql_Show_Num())
print(p1.ql_Func1())
print(p1.__dict__) # 私有属性可以用过_类__属性来获取,所以python没有真正的私有化,只是把名字改一下,在前面添加了下划线加类名,
if __name__ == '__main__':
main()
网友评论