继承数据的两种方式
class jic:
def __init__(self):
self.mystr="zhuan"
self.money=200000000
class kid(jic):
def __init__(self):
jic.__init__(self) #调用父类定义的变量方法一
#super().__init__() #调用父类定义的变量方法二
self.name="kid"
jic1=jic()
jic2=kid()
print(jic1.money)
print(jic2.name)
print(jic2.money)
###############
jic.__init__(self) #调用父类定义的变量方法一
super().__init__() #调用父类定义的变量方法二
继承的意义 ,代码重用,子类变量如果与父类重名就会覆盖父类
多继承:同时继承两个类的属性和方法
属性是后者覆盖前者(在__init__的顺序)
方法是先到的不会被覆盖(在 girl(dad1,dad2)中的顺序)
class dad1:
def __init__(self):
self.money=1000
self.car="bycicle"
self.house="laji"
def buy(self):
print("nothing")
class dad2:
def __init__(self):
self.money = 100000
self.car = "Benz"
self.house = "house"
def bigbuy(self):
print("eyerything")
class girl(dad1,dad2):
def __init__(self):
dad1.__init__(self)
dad2.__init__(self)
jt=girl()
print(jt.money)
jt.buy()
jt.bigbuy()
但是不能继承私有变量self.__name
所有的类都是一个默认的父类(object)
类的自身属性
class dec:
"""
doc写在这里
"""
def __init__(self):
pass
print(dec.__doc__) #类的说明
print(dec.__name__) #类的名字
print(dec.__module__) #从哪个地方开始执行
print(dec.__bases__) #类的父类
print(dec.__dict__) #类的所有属性放在字典
解决父类重复初始化
super().__init() 可以节约内存,只需要用一次就直接重构所有的父类
判断类型
print(isinstance("a",str)) 会返回True False
print(isinstance("a",(str,int))) #判断是否为两者其中一个类型
print(isinstance(子类,父类)) True 判断子类属于父类
print(type((son()))==father) False 是子类与父类的比较,错误
判断的类如果带(),判断就需要写()
多态
解决软件可拓展性
class server:
pass
class make1(server):
def make(self):
server.__init__(self)
print("1")
class make2(server):
def make(self):
server.__init__(self)
print("2")
class addmake(server):
def make(self):
server.__init__(self)
print("add")
def makeserver(obj):
obj.make()
m1=make1()
m2=make2()
m3=addmake()
makeserver(m1)
makeserver(m2)
makeserver(m3)
如果需要增加一个类,直接写入就好,可以直接调用
静态
不需要实例化就可以调用的方法
class People:
def __init__(self,tall):
self.tall=tall
@staticmethod #静态方法
def geteyes():
return 2
def gettall(self):
return self.tall
print(People.geteyes()) #通用的东西,静态方法,不需要实例化就可以调用,实例化也可以调用
类的方法
内部方法和外部方法
class wsc:
def __init__(self):
self.money=10000
@classmethod #标识符,表示内部方法可以省略
def do(self):
print("doing")
def getmoney(wsc): #外部方法,把类当做参数
return wsc.money
dadada=wsc()
print(getmoney(dadada)) #外部方法用法
dadada.do() #内部方法的使用