day6 类
1 #定义一个类 2 3 class Person: #老式类 4 pass 5 6 class Person(object):#新式类 主要区别是多继承老式类是深度查找 新式类是广度查找 7 8 money = 1500 #类变量 用用途大家共用的属性 节省内存开销 9 def __init__(self,name,age): 10 #构造函数 在实例化的时做一些初始化的工作 比如:传参 11 self.name = name 12 self.age = age 13 14 def __del__(self): 15 #在实例释放、销毁的时候自动执行的,通常用于做一些收尾工作, 如关闭一些数据库连接,关闭打开的临时文件 16 pass #print("%s 要挂了...") 17 18 def eat(self): 19 20 print('%s出生就可以吃东西'%self.name) 21 22 def sleep(self): 23 24 print('$s出生就可以睡觉'%self.name) 25 26 r1 = Person('xiaoming','23') #在实例化的时会自动运行类里面的init方法 所以就这个时必须得传两个参数 27 28 r1.name #调用属性 29 30 r1.name = 'laozhang' #修改实例属性 31 32 r1.money #用实例的对象来调类属性 注意不能用实例对象来做修改 33 34 Person.money #用类名来调用类属性 可以直接修改
继承
1 class Person(object): 2 def __init__(self,name,sex): 3 4 self.name = name 5 self.sex = sex 6 7 def eat(self): 8 9 print('%s 出生的时候是 %s' %(self.name,self.sex)) 10 11 class Relation(object): 12 # def __init__(self,n1,n2): 13 # print("init in relation") 14 def make_friends(self,obj): #w1 15 print("%s is making friends with %s" % (self.name,obj.name)) 16 17 #在python3 里面是广度查找 python2是深度查找 18 class man(Relation,Person): #多继承 注意前后顺序 主要是init初始化需要用到的属性 19 20 def piao(self): 21 22 print('$s会piao'%self.sex) 23 24 class woman(Person): 25 #重构父方法 26 def __init__(self,name,sex,mony): 27 #Person.__init__(self,name,sex) #老式写法 28 super(woman,self).__init__(name,sex) #新式写法 29 self.mony = mony 30 31 def birth_child(self): 32 33 print('%人会生孩子'%self.sex) 34 35 m = man('xiao','男人') 36 37 w = woman('xiaodhong','女人',1500) 38 print('%s name %s sex %smony'%(w.name,w.sex,w.mony)) 39 40 m.make_friends(w)
多态
class Person(object): def __init__(self,name): self.name = name @staticmethod #在父类方法里面实现多态 def sleep(obj): obj.sleep() class man(Person): def sleep(slef): print('%s会睡觉'%slef.name) class woman(Person): def sleep(self): print('%s会1睡觉'%self.name) m = man('man') w = woman('woman') #多态一种接口,多种实现 Person.sleep(m) Person.sleep(w)