Python 默认的成员函数和成员变量都是公开的, Python 私有属性和方法没有类似别的语言的 publicprivate 等关键词来修饰。 在 python 中定义私有变量只需要在变量名或函数名前加上 __ 两个下划线,那么这个函数或变量就会为私有的了。

#问女性的姓名、工作是没有问题的,但是问女性的年龄、体重是不礼貌的,所以我们把女性年龄定义为私有属性
#定义显示女性的姓名、工作为公有方法,显示女性年龄、体重为私有方法
#类的定义部分
class Woman():
    name = "Juckes"  #类的公有属性
    job = "Teacher" 
    __ages = 30      #类的私有属性
    __weight = 60
    def disp_nj_info(self):  #类的(公有)方法
        print("Name:{}, Job:{}".format(self.name,self.job)) #类的内部调用公有属性
    def __disp_aw_info(self):  #类的私有方法
        print("Age:{}, Weight:{}".format(self.__ages, self.__weight))  #类的内部调用私有属性
    def dis_all_info(self):
        self.disp_nj_info() #类的内部调用公有方法
        self.__disp_aw_info() #类的内部调用私有方法

(1)类外使用类的公有属性,OK

# 主程序部分
womanA = Woman()
print(womanA.name, womanA.job)
# 运行结果:
# Juckes Teacher

(2)类外使用类的私有属性, Error

#主程序部分
womanA = Woman()
print(womanA.__ages, womanA.__weight)
# 运行结果:
# Traceback (most recent call last):
#   File "D:/untitled2/timer_test.py", line 60, in <module>
#     print(womanA.__ages, womanA.__weight)

(3)类外使用公用方法,OK

# 主程序部分
womanA = Woman()
womanA.disp_nj_info()
# 运行结果:
# Name:Juckes, Job:Teacher

(4)类外使用类的私有方法, Error

# 主程序部分
womanA = Woman()
womanA.__disp_aw_info()
# 运行结果:
# Traceback (most recent call last):
#   File "D:/untitled2/timer_test.py", line 60, in <module>
#     womanA.__disp_aw_info()
# AttributeError: 'Woman' object has no attribute '__disp_aw_info'
更新于 阅读次数