1 def dog(name,age): 2 def chishi(dog1): 3 print('一条[%s]正在吃屎' % dog['name']) 4 def init(name,age): 5 dog1={ 6 7 'name':name, 8 'age':age, 9 'chishi':chishi 10 } 11 return dog1 12 return init(name,age) 13 dog=dog('李磊',18) 14 print(dog['age']) 15 print(dog['chishi'](dog)) 16 17 #---------------------------------面向对象class---------------------------------- 18 class Dogs: 19 def __init__(self,name, age): 20 self.name= name, 21 self.age=age 22 def chishi(self): 23 print('一条[%s]正在吃屎' % self.name) 24 25 dog2=Dogs('李磊',18) 26 dog2.chishi()
类:
1 class Chinese: 2 '这是一个中国人的类' 3 4 dang='党' 5 6 # def __init__(name,age,gender): 7 # dic={ 8 # 'name':name, 9 # 'age':age, 10 # 'gender':gender 11 # } 12 # return dic 13 def __init__(self,name,age,gender): 14 # print('我是初始化函数,我开始运行了') 15 self.mingzi=name #p1.mingzi=name 16 self.nianji=age #p1.nianji=age 17 self.xingbie=gender 18 # print('我结束啦') 19 20 def sui_di_tu_tan(self): 21 print('%s 朝着墙上就是一口痰' %self.mingzi) 22 def cha_dui(self): 23 print(self) 24 print('%s 插到了前面' %self.mingzi) 25 26 def eat_food(self,food): 27 print('%s 正在吃%s' %(self.mingzi,food)) 28 29 p1=Chinese('元昊',18,'female') #--->__init__(self,name,age,gender) 30 p1.sui_di_tu_tan() 31 p1.eat_food('屎')
注:实例对象在调用方法时候会默认传入self,类调用方法的时候不会默认传入self
类的init方法初始化实例的时候 只会初始化init方法内的数据属性不会初始化方法,如果实例要调用方法,现在实例里面找,找不到再导类中去找;
类的增删改
1 class Chinese: 2 country='China' 3 def __init__(self,name): 4 self.name=name 5 6 def play_ball(self,ball): 7 print('%s 正在打 %s' %(self.name,ball)) 8 p1=Chinese('alex') 9 print(p1.__dict__) 10 11 #查看 12 # print(p1.name) 13 # print(p1.play_ball) 14 15 #增加 16 p1.age=18 17 print(p1.__dict__) 18 print(p1.age) 19 20 #不要修改底层的属性字典 21 # p1.__dict__['sex']='male' 22 # print(p1.__dict__) 23 # print(p1.sex) 24 25 #修改 26 p1.age=19 27 print(p1.__dict__) 28 print(p1.age) 29 30 #删除 31 del p1.age 32 print(p1.__dict__)