• 继承


    继承

    继承:类与类的关系,一种创建新类的方式

    新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。

    查看继承关系:bases __base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类

    查看继承顺序:类名.mro

    初步认识继承:

    class Class1: #定义父类
        pass
    
    class Class2: #定义父类
        pass
    
    class SubClass1(Class1): #单继承,基类是Class1,派生类是SubClass
        pass
    
    class SubClass2(Class1,Class2): #python支持多继承,用逗号分隔开多个继承的类
        pass
    
    
    

    实例1:

    class Foo:
        def __init__(self,name,sex):
            self.name = name
            self.sex = sex
    
        def a(self):
            print('尴尬')
     class Bar(Foo):
        def b(self):
            print('不尴尬')
    c = Foo('alex','hh')
    c.a()                       
    

    子类中调用父类的方法:

    方法一:指名道姓,即父类名.父类方法()

    class Vehicle:
        Country = 'China'
        def init(self,name,speed):
            self.name = name
            self.speed = speed
    	def run(self):
        	print('开动啦')
        	
    class Subway(Vehicle):
        def init(self,name,speed,line):
            self.line = line
            Vehicle.init(self,name,speed,) #调用父类的方法,直接父类名点父类的方法,这里要加self注意!!!
    
    line13 = Subway('中国地铁','1000人/箱','电')
    
    line13.run() #返回;开动啦
    

    方法二:super()

    class Vehicle1:
        def init(self,name,speed):
            self.name = name
            self.speed = speed
    def run1(self):
        print('开动啦1!!!!')
        
    class Subway1(Vehicle1):
        def init(self,name,speed,line):
            super().init(name,speed) #这里没有self
            self.line = line
    line1 = Subway1('中国地铁','1000人/箱','电')
    line1.run1() #返回;开动啦
    

    继承查找属性,或者叫继承顺序

    python2有经典类,新式类,py2是继承obiect 深度优先

    python3只有新式类,广度优先

    class Foo:
        def f1(self):
            print('Foo.f1')
    
        def f2(self):
            print('Foo.f2')
            self.f1()
    
    class Bar1(Foo):
        def f1(self):
            print('bar.f1')
    b=Bar1()
    b.f2()
    总结:查找原则,是先在总结的实例中找-->然后去实例的类中找-->然后再去父类中找...直到最顶级的父类。
    

    实例2:

    class A:
        def test(self):
            print('aaa')
    
    class B(A):
        def test(self):
            print('bbb')
    
    class C(A):
        def test(self):
            print('ccc')
    
    class D(B):
        def test(self):
            print('新式类广度优先')
    
    class E(C):
        def test(self):
            print('eee')
    
    class F(D,E):
        pass
        # def test(self):
        #     print('fff')
    x = F()
    x.test()
    
    python3只有新式类,执行顺序是: F ,D  ,B ,  E, C, A
    
    python2,分新式类,经典类  执行顺序是: F, D, B, A, E, C
    
  • 相关阅读:
    Etcd Web UI
    安装cfssl证书工具
    top命令
    解决k8s Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused
    k8s集群安装KubeSphere3.0
    k8s基于NFS部署storageclass实现pv并标记为一个默认的StorageClass
    k8s提示Unable to connect to the server: x509
    k8s安装Prometheus+Grafana
    开源日志管理ELK和Graylog区别
    mysql数据库查询结果导出
  • 原文地址:https://www.cnblogs.com/sunny7/p/9715803.html
Copyright © 2020-2023  润新知