面向对象编程 - 实例的增删改查(数据属性和函数属性)
class Chinese: country='China' def __init__(self,name): self.name=name def play_ball(self,ball): print('%s 正在打%s' %(self.name,ball)) ##实例的数据属性的增删改查 p1=Chinese('alex') print(p1.__dict__) #{'name': 'alex'} #查看 print(p1.name) #alex print(p1.play_ball('篮球')) #alex 正在打篮球 None #增加 p1.age=20 print(p1.__dict__) #{'name': 'alex', 'age': 20} print(p1.age) #20 #不要修改底层的属性字典 # p1.__dict__['sex']='male' # print(p1.__dict__) # print(p1.sex) #修改 p1.age=12 print(p1.__dict__) #{'name': 'alex', 'age': 12} print(p1.age) #12 #删除 del p1.age print(p1.__dict__) #{'name': 'alex'}
##实例的函数属性的增删改查
p1 = Chinese('alex')
# print(p1.__dict__) # {'name': 'alex'}
#
# # 查看
# print(p1.name) # alex
# print(p1.play_ball('篮球')) # alex 正在打篮球 None
#
# # 增加
# p1.age = 20
# print(p1.__dict__) # {'name': 'alex', 'age': 20}
# print(p1.age) # 20
# # =======================================================
# # 不要修改底层的属性字典
# # p1.__dict__['sex']='male'
# # print(p1.__dict__)
# # print(p1.sex)
# # ======================================================
# # 修改
# p1.age = 12
# print(p1.__dict__) # {'name': 'alex', 'age': 12}
# print(p1.age) # 12
#
# # 删除
# del p1.age
# print(p1.__dict__) # {'name': 'alex'}
# 实例的函数属性的增删改查
# 查
p1.play_ball('篮球') # alex 正在打篮球
# 增加
def study(self, lesson):
print('%s正在上%s' % (self.name, lesson))
#
#
p1.study = study
# p1.study('英语课')
# # 报错, 原因用实例创建的函数属性和类创建的函数属性不同, 类可以不输入self程序自动输入,而实例创建的必须手动输入
p1.study(p1, '英语课') # alex正在上英语课
# 修改
# 实际上修改就是增加
def play_ball(self, ball):
print('%s不喜欢%s' % (self.name, ball))
#
#
p1.play_ball = play_ball
p1.play_ball(p1, '篮球') # alex不喜欢篮球
Chinese.play_ball(p1, '篮球') # alex 正在打篮球
# 实例已经不能调用类属性的函数属性了,因为实例里面有自己的函数属性 ,类的函数属性修改还是需要在类下面操作
# 删除
del play_ball
p1.play_ball('篮球')# 报错 实例下面没有就报错, 不能铲除类的函数属性
def play_ball(self, ball):
print('%s不喜欢%s' % (self.name, ball))
p1.play_ball = play_ball
print(p1.__dict__)
p1.play_ball(p1, '篮球') # alex不喜欢篮球
del p1.play_ball # 只写play_ball 无效, 不能区分类下的,还是实例下的play_ball
print(p1.__dict__)