龙空技术网

python类继承

我不是一个神经病 176

前言:

此刻我们对“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继承属性