(100天2小时第四天)类的继承

一、通过继承创建的新类称为子类派生类,被继承的类称为基类父类超类

在python中继承中的一些特点:

  • 1、如果在子类中需要父类的构造方法就需要显式的调用父类的构造方法,或者不重写父类的构造方法。
  • 2、在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别在于类中调用普通函数时并不需要带上 self 参数
  • 3、Python 总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去父类中找)。

如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。

class Parent:        # 定义父类
    parentAttr = 100
    def __init__(self):
        print("调用父类构造函数")

    def parentMethod(self):
        print('调用父类方法')

    def setAttr(self, attr):
        Parent.parentAttr = attr

    def getAttr(self):
        print("父类属性 :", Parent.parentAttr)

class Child(Parent): # 定义子类
    def __init__(self):
        print("调用子类构造方法")

    def childMethod(self):
        print('调用子类方法')

c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法 - 设置属性值
c.getAttr()          # 再次调用父类的方法 - 获取属性值

二、1.issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)

  注意:实例化对象时要加括号。

class A:
    def __init__(self):
        print("math")
class B:
    def __init__(self):
        print("hello")
class C(A,B):
    def __init__(self):
        print("world")

c=C()  #注意括号,要记得加括号,实例化时就会调用本身的方法
print(issubclass(C,A)) #判断C是不是A的子类
print(isinstance(c, C)) #判断c是不是C的实例化对象
print(isinstance(c, B)) #判断c是不是B的实例化对象或者B的子孙类的实例化对象

  

2.isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true。

class Parent:        # 定义父类
    parentAttr = 100
    def __init__(self):
        print("调用父类构造函数")

class Child(Parent): # 定义子类
    def __init__(self):
        print("调用子类构造方法")

c = Child()          # 实例化子类,实例化时就会有输出

print(isinstance(c, Child))

 

猜你喜欢

转载自blog.csdn.net/zhangxue1232/article/details/109366074