80.Python类的私有属性和私有方法( 实现封装 )

私有属性和私有方法 ( 实现封装 )

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章