属性的增删改查
'''创建一个学生类,假设这些学生都是来自同一个学校,同一个班级,学校和班级则可以当作类属性''' class Student: school="史莱克学院" grade="终极一班" def __init__(self,name,gender,clsID): self.name=name self.gender=gender self.clsID=clsID def study(self): print("good good study,day day up") def play_games(self): print("会玩才会学,不会玩,你叫我怎么学")
print(Student.__dict__)
#执行结果为:
{'__module__': '__main__', 'school': '史莱克学院', 'grade': '终极一班', '__init__': <function Student.__init__ at 0x0000000002AF22F0>, 'study': <function Student.study at 0x0000000002AF2378>,
'play_games': <function Student.play_games at 0x00000000026C2400>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>,
'__doc__': None}
#为Student类添加一个类属性【添加类属性】
Student.clscategory="魔法班"
print(Student.__dict__)
#执行结果为:
{'__module__': '__main__', 'school': '史莱克学院', 'grade': '终极一班', '__init__': <function Student.__init__ at 0x00000000027B22F0>, 'study': <function Student.study at 0x00000000027B2378>
'play_games': <function Student.play_games at 0x00000000026C2400>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>,
'__doc__': None,'clscategory': '魔法班'}
#_________________添加类属性的格式为 类名.newattr=attrvalue
#删除clscategory属性
del Student.clscategory
print(Student.__dict__)
#执行结果为:
{'__module__': '__main__', 'school': '史莱克学院', 'grade': '终极一班', '__init__': <function Student.__init__ at 0x0000000002AF22F0>, 'study': <function Student.study at 0x0000000002AF2378>,
'play_games': <function Student.play_games at 0x00000000026C2400>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>,
'__doc__': None}
#_________________________删除类属性的格式为 del 类名.attr
#修改grade属性的属性值
Student.grade="终极三班"
print(Student.__dict__)
#执行结果为:
{'__module__': '__main__', 'school': '史莱克学院', 'grade': '终极三班', '__init__': <function Student.__init__ at 0x0000000002AF22F0>, 'study': <function Student.study at 0x0000000002AF2378>,
'play_games': <function Student.play_games at 0x00000000026C2400>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>,
'__doc__': None}
s=Student("唐三","男",6100116003)
print(s1.__dict__)
执行结果为:
{'name': '唐三', 'gender': '男', 'clsID': 6100116003}
#添加实例属性age
s.age=18
print(s.__dict__)
#执行结果为
{'name': '唐三', 'gender': '男', 'clsID': 6100116003, 'age': 18}
#添加实例属性的格式 实例名.newattr=attrvalue
#删除属性age
del s.age
print(s.__dict__)
执行结果为:
{'name': '唐三', 'gender': '男', 'clsID': 6100116003}
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
s.school="超神学院"
print(s.__dict__)
执行结果为;
{'name': '唐三', 'gender': '男', 'clsID': 6100116003, 'age': 18, 'school': '超神学院'}
实例并不能修改类属性的值,虽然表面上看上去确实修改了类属性的值,其实只是为实例添加了一个属性,属性名与类属性名相同而已。