大家好,欢迎来到IT知识分享网。
一.摘要
继承 子承父业,父亲有的,孩子都有 继承的时候,出现孩子和父亲都有的属性或方法时,会优先自身类找
二.类继承的基本使用
代码如下:
class Father: #所有的类,默认是继承了object #姓氏 xs="李" name="李好" money="999" def hobby(self): print(self.name+"喜欢打篮球") class Son(Father): #儿子继承父类 def __init__(self,name): self.name=name s1=Son("李子") #类传参是通过init方法去接收 print("姓氏:{},名字:{},存款:{}".format(s1.xs,s1.name,s1.money)) s1.hobby() s2=Son("李紫") print("姓氏:{},名字:{},存款:{}".format(s2.xs,s2.name,s2.money)) s2.hobby()
运行如下:
三.__base__
代码如下:
class Father(object): #所有的类,默认是继承了object xs="李" name="李好" money="999" def hobby(self): print(self.name+"喜欢打篮球") class Son(Father): #儿子继承父类 def __init__(self,name): self.name=name print(Son.__base__)#<class '__main__.Father'> 查看直接父类 print(Father.__bases__)
运行如下:
四.单继承
代码如下:
class Father(object): #所有的类,默认是继承了object #姓氏 xs="李" name="李好" money="999" def hobby(self): print(self.name+"喜欢打篮球") class Son(Father): #儿子继承父类 def __init__(self,name): self.name=name def hobby(self): #方法重写 print(self.name+"喜欢打游戏") Father.hobby(self) #通过类名调用父类的方法 super().hobby() #直接父类方法 s1=Son("李子") #类传参是通过init方法去接收 s1.hobby()
运行如下:
举例:
代码如下:
class Yeye: def info(self): #info是个自定义的方法名 print("爷爷") class Father(Yeye): def info(self): #info是个自定义的方法名 print("父亲") class Me(Father): def info(self): print("自己") super().info() #上一层类方法,最近的类中的方法 Yeye().info() #指定类 方法1 Yeye.info(self) #方法2 mm=Me() mm.info()
运行如下:
五.多继承
代码如下:
class Father: def info(self): print("父亲") class Mother: def info(self): print("母亲") class Me(Father,Mother): #super谁在前面先继承谁 def info(self): print("自己") super().info() #super只会继承一个 mm=Me() mm.info() #查看继承顺序 print(Me.mro()) print(Me.__mro__)
运行如下:
六.new方法和init方法的执行过程
代码如下:
class Base(object): def __new__(cls, *args, kwargs): print("new方法") return object.__new__(cls) #创建一个地址 def __init__(self): print("初始化属性方法") b1=Base() print(id(b1)) b2=Base() print(id(b2))
运行如下:
七.单例模式
买一台手机,是一台新的,就是第一次实例化
发现手机有问题,要求换货,商家修理发回的还是原来那台有问题的手机,第二次实例化
又发现问题,又返回商家,只是修理还是返回原来的手机,第三次实例化
。。。不管实例化多少次都不会给你换新的
代码如下:
class A: _instance = 0 # 类属性 def __new__(cls,*args, kwargs): if cls._instance == 0: cls._instance = object.__new__(cls)#只要这个方法不执行,那就不会生产新的 return cls._instance else: return cls._instance print("实例化A类之前:",A._instance) a1=A() print("实例化一次后:",A._instance) a2=A() print("实例化二次后:",A._instance)
运行如下:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/159974.html