19-Python类的继承和单例模式

1.继承

1.1 什么是继承

让子类直接拥有父类的属性和方法的过程就是继承
父类 - 被继承者(又叫超类)
子类 - 继承者

1.2 怎么继承

class 类名(父类1,父类2,…):
类的说明文档
类的内容

注意: 默认情况下,定义的类继承自 object

class Person:
    num = 61

    def __init__(self):
        print('Person中init')
        self.name = '小明'
        self.age = 18
        self.gender = '男'
        self.__sex = '女'

    def eat(self):
        print(f'Person:{self.name}在吃饭')

    @classmethod
    def show_num(cls):
        print(f'人类的数量:{cls.num}')

    @staticmethod
    def func1():
        print('人类破坏环境!')

让 Student(子类) 继承 Person(父类)

class Student(Person):
    pass

继承的时候子类可以直接拥有父类所有的属性和方法

print(Student.num)
stu = Student()
print(stu.name, stu.age, stu.gender)  # 小明 18 男
stu.eat() # Person:小明在吃饭 
Student.show_num() # 人类的数量:61
Student.func1() # 人类破坏环境!	
print(stu.__dict__) # {'name': '小明', 'age': 18, 'gender': '男', '_Person__sex': '女'}

1.3.在子类中添加内容

1)在子类中添加类属性和方法
类属性和方法的添加不会因为继承而收到任何影响

  1. 添加对象属性
    对象属性是怎么被继承:继承的时候因为init方法被继承,间接继承了对象属性

在子类的__init__方法中通过 super()去调用父类的__init__方法

类中的方法的调用过程(重要):

通过类或者对象在调用方法的时候,会先看当前类中有没有这个方法,如果有就直接调用自己类中的方法;没有就看父类中有没有定义这个方法,如果父类定义了就调用父类的;父类没有定义,就看父类的父类中有没有定义…以此类推,如果 object 中没有定义才会报错!

例1:

class Teacher(Person):
    title = '老师'

    def __init__(self):
        # 调用父类的init方法
        super().__init__() 
        self.school = '千锋'
        self.subject = 'Python'
        self.tea_id = '001'

    def attend_class(self):
        print('老师上课')

    def eat(self):
        super().eat()
        print(f'老师在吃饭')


print(Teacher.num, Teacher.title)
t1 = Teacher()
t1.attend_class()

print(t1.school, t1.subject, t1.tea_id)
print(t1.name)

t1.eat()

例2:

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def eat(self, food):
        print(self.name 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值