私有属性和私有方法(实现封装)【学习笔记】

发布于:2023-02-18 ⋅ 阅读:(558) ⋅ 点赞:(0)

文章目录

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则不能调用,需要用特殊的格式调用。


网站公告

今日签到

点亮在社区的每一天
去签到