Python学习记录 面向对象

本文介绍了Python面向对象编程的三大特征:封装、继承和方法重写。通过实例展示了如何创建子类、调用父类构造函数以及如何重写父类方法。同时,解释了成员继承和方法重写的概念及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2022.08.15 DAY31

面向对象三大特征

封装
  • 隐藏对象的属性和实现方法,只对外提供必要的方法。
继承
  • 继承可以让子类具有父类的特性,提高代码的重用性

  • 子类继承父类(基类)

  • python支持多重继承,一个子类可以继承多个父类。

  • 语法格式:

      class 子类类名(父类1[, 父类2, ...]):
          类体
    
  • 如果在类定义中没有指定父类,则默认父类为object类。也就是说,object是所有类的父类,里面定义了所有类的公有的默认实现,比如:_new_()。

  • 定义子类时,必须在其构造函数中调用父类的构造函数。调用格式如下:

      父类名.__init__(self, 参数列表)
    

实例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_info(self):
        print(self.name, "的年龄为:", self.age)


class Student(Person):

    def __init__(self, name, age, score):
        Person.__init__(self, name, age)  # 必须显式调用父类的初始化方法,不然解释器不会去调用
        self.score = score

    def get_info(self):
        print(self.name, "的年龄为:", self.age, "分数为:", self.score)


def test():
    s = Student("YJP", 21, 149)
    s.get_info()
    print(dir(s))


if __name__ == "__main__":
    test()

运行结果:

YJP 的年龄为: 21 分数为: 149
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'get_info', 'name', 'score']
  • 成员继承:子类继承了父类除构造方法之外的所有成员。
  • 方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类的方法,也称为重写。

重写案列:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce_name(self):
        print("我的名字为:", self.name)

    def introduce_age(self):
        print("我的年龄为:{0}".format(self.age))


class Student(Person):

    def __init__(self, name, age, score):
        Person.__init__(self, name, age)  # 必须显式调用父类的初始化方法,不然解释器不会去调用
        self.score = score

    def introduce_name(self):
        """ 重写父类的方法 """
        print("大家好,我的名字为:", self.name)

    def introduce_age(self):
        """ 重写父类的方法 """
        print("大家好,我的年龄为:{0}".format(self.age))


def test():
    s = Student("YJP", 21, 149)
    s.introduce_name()
    s.introduce_age()


if __name__ == "__main__":
    test()

运行结果:

大家好,我的名字为: YJP
大家好,我的年龄为:21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值