Python
默认的成员函数和成员变量都是公开的, Python
私有属性和方法没有类似别的语言的 public
、 private
等关键词来修饰。 在 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' |