类的基本思想
类:把一类事物的相同的特征和动作整合到一起就是类
类是一个抽象的概念
对象:就是基于类而创建的一个具体的事物(具体存在的)
也是特征和动作整合到一块
对象写法
# 对象写法 def school(name, addr, type): # 对象 def __init__(name, addr, type): # 初始化 sch = { 'name': name, 'addr': addr, 'type': type, 'kaoshi': kao_shi, 'zhaosheng': zhao_sheng, } return sch def kao_shi(school): print('%s 学生正在考试' % school['name']) def zhao_sheng(school): print('%s %s 正在招生' % (school['type'], school['name'])) return __init__(name, addr, type) s1 = school('Hs', 'henan', '私立学校') print(s1['name']) s1['zhaosheng'](s1)
# 类的相关属性 class Chinese: # 类 tuanyuan='团员' # 属性 def sui_di_tu_tan(): # 函数 print('随地吐痰') print(Chinese.tuanyuan) # 团员 Chinese.sui_di_tu_tan() # 随地吐痰 # print(dir(Chinese)) # print(Chinese.__dict__) # 查看属性字典 print(Chinese.__dict__['tuanyuan']) # 团员 Chinese.__dict__['sui_di_tu_tan']() # 随地吐痰
类的写法
# 类写法 class School(object): def __init__(self,name, addr, type): self.name=name self.addr=addr self.type=type def kao_shi(self): print('%s 学生正在考试' %(self.name)) def zhao_sheng(self): print('%s %s 正在招生' % (self.type, self.name)) s1 = School('Hs', 'henan', '私立学校') # 此时直接运行了__init__()函数 s2 = School('清华', '北京', '公立学校') print(s1.__dict__) s1.zhao_sheng() s2.zhao_sheng() s1.kao_shi() s2.kao_shi()
class Chinese: # 类 tuanyuan='团员' # 属性 def __init__(self,name,age,sex): self.mingzi=name self.nianling=age self.xingbie=sex def sui_di_tu_tan(self): # 函数 print('%s 随地吐痰' %(self.mingzi)) def cha_dui(self): # 函数 print('%s 插队' % (self.mingzi)) c1=Chinese('meimei',24,'female') c2=Chinese('haohao',24,'male') print(c1.__dict__) print(c2.__dict__) c1.sui_di_tu_tan() c2.cha_dui()
类的增删查改
# 类的增删改查 class Chinese: country = 'China' def __init__(self, name): self.name = name def play_baskctball(self, ball): print('%s 正在打 %s ' % (self.name)) # 查看 print(Chinese.country) # China # 修改 Chinese.country = 'huayi' print(Chinese.country) # huayi p1=Chinese('hanhan') print(p1.__dict__) print(p1.country) #增加 Chinese.tuanyuan='团员' print(Chinese.tuanyuan) # 团员 # 删除 del Chinese.tuanyuan del Chinese.country print(Chinese.__dict__) print(Chinese.country) # 增加函数 def eat_food(self,food): self.food=food print('吃%s'%(self.food)) Chinese.eat=eat_food print(Chinese.__dict__) p1.eat('苹果') # 吃苹果
实例属性的增删改查
# 实例属性的增删改查 class Chinese: country = 'China' def __init__(self, name): self.name = name def play_baskctball(self, ball): print('%s 正在打 %s ' % (self.name, ball)) c1 = Chinese('hanhan') print(c1.__dict__) # 查看 print(c1.name) # hanhan print(c1.play_baskctball) # 增加 c1.age = 18 print(c1.__dict__) # {'name': 'hanhan', 'age': 18} print(c1.age) # 18 def test(self): print('我是来自实例的函数属性') c1.test = test print(c1.__dict__) c1.test(c1) # 我是来自实例的函数属性 # 修改 c1.age=19 print(c1.__dict__) print(c1.age) # 19 # 删除 del c1.age print(c1.__dict__) #{'name': 'hanhan', 'test': <function test at 0x030ABC00>}
实例属性和类属性混合使用
class Chinese: country = 'China' def __init__(self, name): self.name = name def play_baskctball(self, ball): print('%s 正在打 %s ' % (self.name, ball)) c1 = Chinese('hanhan') print(c1.country) # China c1.country='中国' print('类的---->',Chinese.country) # 类的----> China print('实例的--->',c1.country) # 实例的---> 中国
插曲:
country='China' class Chinese: def __init__(self, name): # 只要一实例化对象 立刻执行该方法 self.name = name print('--->',country) # ---> China def play_baskctball(self, ball): print('%s 正在打 %s ' % (self.name, ball)) c1 = Chinese('hanhan') #---> China 此时 可以找到类以外的变量 # print(c1.country) # 报错
插曲2:
country='China' class Chinese: country='中国' def __init__(self, name): # 只要一实例化对象 立刻执行该方法 self.name = name print('--->',country) # ---> China def play_baskctball(self, ball): print('%s 正在打 %s ' % (self.name, ball)) c1 = Chinese('hanhan') # 此时 还是 ---> China 而不是中国 print(c1.country) # 此时才为中国
来源:https://www.cnblogs.com/pyhan/p/12290632.html