反射
处理字符串类型的属性名
class Management: role = '管理员' def __init__(self,name,sex,phone,mail): self.name = name self.sex = sex self.phone = phone self.mail = mail def creat_class(self): print('创建了一个班级') def creat_teacher(self): print('新建了一条讲师信息') def creat_student(self): print('新建了一条学生信息') print(Management.role) aa = input("要输入") if hasattr(Management,aa): print(getattr(Management,aa)) # 输入role 打印 管理员
getattr是拿到名字,hasattr是判断名字在不在,第一个参数是类或对象名,第二个参数是字符串类型的属性名
创建一个实例
manager = Management('小雨','女',1233211234567,'xiaoyu@qq.com') #getattr相当于返回属性名 sex = getattr(manager,'sex') # 相当于manager.sex print(sex) #女 cs = getattr(manager,'creat_class') # 相当于manager.creat_class cs() #创建了一个班级
setattr 是常用语添加一个静态属性 , delattr 删除一个属性
manager = Management('小雨','女',1233211234567,'xiaoyu@qq.com') setattr(manager,'hobby','点名') # == manager.hobby = '点名' print(manager.hobby) # 点名 传递三个参数第二个参数是字符串类型的属性名,第三个参数是属性对应的值 # 可以传递一个函数名,不过调用时还要把对象名写进去,这样添加的方法不会帮你自动传递 #对象, 如果不传就会报错,提示你少一个参数 def create_course(self): print('创建了一个课程') setattr(manager,'create_course',create_course) manager.create_course(manager) # 创建了一个课程 #delattr删除属性 delattr(Management,'creat_class') manager.creat_class() # 报错,没有这个属性

浙公网安备 33010602011771号