继承
class Dog():
def __init__(self):
print('旺旺')
class Tdi(Dog):
def __init__(self): # 重写
print('嗷呜嗷呜')
Dog.__init__() #如果还想保留父类的方法,就调用父类的方法
super().__init__() # super找父类
xiaobaigou = Tdi()
object类是所有类的基类
class A():
pass
print(A.__bases__) # 查看基类
多继承
class Person:
def __init__(self,name='baby',age=0):
self.name = name
self.age = age
def sleep(self):
print('sleep')
def eat(self):
print('eat')
def cooking(self):
print('cooking')
class Father(Person):
def coooking(self):
print('香!')
super().cooking()
def painting(self):
print('%s的画画技术世界一流'%self.name)
a = Father()
a.cooking()
a.sleep()
a.painting()
class Mather(Person):
def cooking(self):
print('很香!')
def zhimaoyi(self):
print('zhi')
b = Mather()
b.cooking()
b.zhimaoyi()
class Son(Father,Mather): # 就近原则
def cry(self):
print('cry')
def cooking(self):
super.cooking()
print('泡面')
panghu = Son('胖虎',5)
panghu.cry()
panghu.cooking()
一般不提倡多继承
new 魔法方法
单例模式
class Earth():
def __new__(cls, *args, **kwargs):
if not hasattr(cls, 'instance'):
cls.instance = super().__new__(cls)
return cls.instance
单例的运用:任务管理器,回收站,项目日志,多线程的线程池的设计