Python 面向对象六:继承,多继承,方法的重写,object类,多态

原创
2021/04/26 03:48
阅读数 85

单继承

class Person(object):  
    # object 不写的话默认继承object,所以()可不填
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print("我的姓名是{0},年龄{1}".format(self.name, self.age))


# 定义子类 继承 Person 类
class Student(Person):
    def __init__(self, name, age, score):
        # 继承父类Person的 name age
        super().__init__(name, age)
        self.score = score

多继承

class A(object):
    pass
class B(object):
    pass
# 同时继承A和B
class C(A, B):
    pass

重写

如果父类中某一方法功能太少,可以在子类中重写该方法

调用父类中的方法:super().父类方法名()

class Person():
    # object 不写的话默认继承object,所以()可不填
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print("我的姓名是{0},年龄{1}".format(self.name, self.age))


# 定义子类
class Student(Person):
    def __init__(self, name, age, score):
        # 继承父类Person的 name age
        super().__init__(name, age)
        self.score = score
    
    # 重写父类的info()方法
    def info(self):
        # 先调用父类的info()方法
        super().info()
        print("得分:",self.score)


sut1 = Student('lee', 18, 98)
sut1.info()

object类:

  • object 类 是所有类的父类,因此所有类都有 object 类的方法和属性
  • 内置函数 dir() 可以查看指定对象的所有属性
  • object 类 有一个 __ str__ 方法 用于返回对该对象的描述,对应内置 函数 str() 经常用到的 print() 方法,帮我们查看对象的信息
    所以我们经常重写 __ str__

多态:

多态就是多种形态,即使不知道一个变量引用的对象是什么类型,任然可以通过这个变量调用这个方法,
在运行的过程中,根据变量所引用的对象的类型,动态的调用哪个对象中的方法。

人话:多个类中写了同样的方法名,只能功能不同。

即一个接口,多种实现

class Person():
    def play(self):
        print("hello world")


class Poor(Person):
    # 重写父类的play
    def play(self):
        print("穷玩车")


class Rich(Person):
    def play(self):
        print("富玩biao")


class Diaosi():
    # 我就不继承了
    def play(self):
        print("屌丝玩电脑")


# 定义一个函数,同一接口,不同实现
def func(obj):

    obj.play()


p1 = Poor()
p2 = Rich()
p3 = Diaosi()

func(p1)
func(p2)
func(p3)

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部