Python基础-类的继承/属性方法(8)

什么是类的继承?

类的继承就是让子类拥有父类的属性和方法。

类继承格式:

class 子类名(父类1,父类2)

几个注意:

  • py支持多继承
  • 子类继承的父类只能初始化一次,如果父类1和父类2有共同的父类或者祖先类,则类初始化的时候会失败。
  • 当父类具有相同方法时,会调用最先继承的父类中的方法,如果要指定父类,则需要重写此方法,并通过父类名.方法名来调用指定父类方法。
class Parent:
    def eat(self):
        print('父吃')
class Child(Parent):
    def say(self):
        print('孩说')
class Child1(Child):
    def say(self):
        print('重写方法')
#继承的基类只能出现一次,因为Child1继承了Child,所以Child类
#等于出现了两次,所以在类进行初始化时会发生错误,
#class Child2(Child,Child1):
#    def fun(self):
#        print()
class Parent2():
    def eat(self):
        print('父类2')
#当继承的两个类有相同的方法时,会优先加载先继承的类的方法
#如果要指定采用哪个父类的方法,则需要重写,并且将父类函数
#需要的参数传进去
class Child3(Parent,Parent2):
    def eat(self):
        Parent2.eat(self)
    def fun(self):
        print('无')
child=Child()
#子类调用父类方法
child.eat()
#子类自定义方法
child.say()
child1=Child1()
#子类重写父类方法
child1.say()
#子类调用祖父类方法
child1.eat()
child3=Child3()
child3.eat()

拓展:

  • isinstance():判断某个实例是否属于某个类
    此函数需要输入两个参数,第一个为实例,第二个为类。返回类型为布尔值
#用该实例与该类的父类进行比较,返回的也是true
print(isinstance(child3,Parent))
  • dir(实例/类) : 返回一个对象/类的所有属性和方法

print(dir(child3))
print(dir(Child3))
  • hasattr(类/实例,'属性'):是否存在此属性值
  • getattr(类/实例,'属性'):得到此属性值
  • setattr(类/实例,'属性',更改值)
class Parent:
    a=123
    b='sgd'
    def eat(self):
        print('父吃')
parent=Parent()
#True 是否存在该属性之
print(hasattr(parent,'a'))
#123  得到该实例的a的属性值
print(getattr(parent,'a'))
#设置该对象的属性值
setattr(parent,'b',123)
#123
print(getattr(parent,'b'))

你可能感兴趣的:(Python基础-类的继承/属性方法(8))