Python —类的私有属性、公有属性、私有方法、公有方法
程序员文章站
2024-01-20 22:32:04
...
类的私有属性、公有属性、私有方法、公有方法
类的公有属性
public_attrs:能在类的外部被使用或直接访问。在类内部的方法中使用时 public_attrs_attrs,在类的外部class_name.public_attrs。
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的(公有)方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。
#问女性的姓名、工作是没有问题的,但是问女性的年龄、体重是不礼貌的,所以我们把女性年龄定义为私有属性
#定义显示女性的姓名、工作为公有方法,显示女性年龄、体重为私有方法
#类的定义部分
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)
AttributeError: 'Woman' object has no attribute '__ages'
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'
5、类外通过调用公有方法的方式,间接调用私有方法,OK
主程序
#主程序部分
womanA = Woman()
womanA.dis_all_info() #通过调用dis_all_info,间接调用__disp_aw_info
运行结果
Name:Juckes, Job:Teacher
Age:30, Weight:60