私有属性和私有方法 ( 实现封装 )
Python对于类的成员没有严格的访问控制限制, 这与其他面向对象语言有区别; 关于私有属性和私有方法, 有如下要点:
=> 通常我们约定, 两个下划线开头的属性或方法是私有的(private); 其他为公共的(public);
=> 类内部可以访问私有属性(方法);
=> 类外部不能直接访问私有属性(方法);
=> 类外部可以通过 “_类名__私有属性(方法)名”访问私有属性(方法);
注: 方法本质上也是属性, 只不过是可以通过()执行而已; 所以, 此处说的私有属性和共有属性, 也同时讲解了私有方法和共有方法的用法; 如下测试中, 同时也包含了私有方法和公有方法的例子;
#测试私有属性,对外是私有的,对内随便用
class Employee:
__company = "百战成神"
def __init__(self,name,age):
self.name = name
self.__age = age #两个下划线,定义成私有属性 '_Employee__age'
def __work(self): #私有方法
print("好好上班")
print("年龄:{0}".format(self.__age)) #自己调本类私有属性随便调
print(Employee.__company) #内部调用私有类属性
e = Employee("张三",18)
print(e.name)
print(e._Employee__age) # 类外部可以通过 “_类名__私有属性(方法)名”访问私有属性(方法);
# print(dir(e))
e._Employee__work() #调类的私有方法
print(Employee._Employee__company) #外部调用私有类属性
输出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypro_obj/mypy02.py
张三
18
好好上班
年龄:18
百战成神
百战成神
Process finished with exit code 0