前言:
此刻我们对“python继承属性”都比较讲究,看官们都需要学习一些“python继承属性”的相关文章。那么小编同时在网摘上汇集了一些关于“python继承属性””的相关资讯,希望大家能喜欢,看官们快快来学习一下吧!一.摘要
继承子承父业,父亲有的,孩子都有继承的时候,出现孩子和父亲都有的属性或方法时,会优先自身类找二.类继承的基本使用
代码如下:
class Father: #所有的类,默认是继承了object #姓氏 xs="李" name="李好" money="999" def hobby(self): print(self.name+"喜欢打篮球")class Son(Father): #儿子继承父类 def __init__(self,name): self.name=names1=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=nameprint(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) #方法2mm=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._instanceprint("实例化A类之前:",A._instance)a1=A()print("实例化一次后:",A._instance)a2=A()print("实例化二次后:",A._instance)
运行如下:
标签: #python继承属性