类的定义,类的继承以及super的使用

本文通过三个编程示例介绍了面向对象编程的概念,包括类变量、对象变量、方法定义、字符串表示、对象相加及临时变量的使用。同时,展示了如何在多重继承的场景下,利用super()关键字灵活地调用不同父类中的方法。示例涵盖了类的定义、实例化以及方法的覆盖和调用,深入理解这些概念对于提升编程技能至关重要。
摘要由CSDN通过智能技术生成

1.定义一个类(不限定定义哪个类):
要求: a.需要有一个类变量
b.需要有>=2个的对象变量
c.定义一个方法:打印类变量和对象变量
d.使用print打印对象->输出为This is a object
e.实例化两个对象:且两个对象相加等于2
f.为对象添加一个临时变量temp_var

class Person():
    name = 'lele'

    def __init__(self, age, sex):
        self.age = age
        self.sex = sex

    def print_a(self):
        print(Person.name, self.age, self.sex)

    def __str__(self):
        return 'This is a object'

    def __add__(self, other):
        return 2


p1 = Person(21, '男')
p2 = Person(22, '女')

p1.print_a()
print(p1)
print(p1 + p2)
p1.temp_var = '中国'
print(p1.temp_var)



'''
lele 21 男
This is a object
2
中国
'''


2.super的使用:
定义一个类A, 里面又一个方法print_info
定义一个类B, 里边有一个方法print_info和一个方法say_something
定义一个类C, 里边有一个方法say_something
定义一个类D, 里边有一个方法print_info和一个方法say_something
定义一个类E,继承类A, 类B, 类C,类D
实例化类E的对象
执行print_info和say_something方法
利用super,让执行print_info时调用B中print_info
利用super, 让执行say_something时调用C中say_something
利用super, 让执行print_info和say_something时调用
D中print_info和say_something

class A:
    def print_info(self):
        print('print_info:AAA')


class B:
    def print_info(self):
        print('print_info:BBB')

    def say_something(self):
        print('say_something:BBB')


class C:
    def say_something(self):
        print('say_something:CCC')


class D:
    def print_info(self):
        print('print_info:DDD')

    def say_something(self):
        print('say_something:DDD')


class E(A, B, C, D):
    def print_info(self):
        # super() 将返回一个从 MRO 中 C 之后的类中查找方法的对象。
        # super(E, self).print_info()
        # 利用super,让执行print_info时调用B中print_info
        super(A, self).print_info()
        # 利用super, 让执行print_info和say_something时调用D中print_info和say_something
        # super(C, self).print_info()

    def say_something(self):
        # super(E, self).say_something()
        # 利用super, 让执行say_something时调用C中say_something
        super(B, self).say_something()
        # 利用super, 让执行print_info和say_something时调用D中print_info和say_something
        # super(C, self).say_something()


e = E()
e.print_info()
e.say_something()



'''
print_info:BBB
say_something:CCC
'''


3.定义一个父类:
要求:包含三个对象变量,且其中一个对象变量使用_命名
定义一个方法:命名使用__命名
定义一个子类继承上边的父类:且定义一个和父类方法名相同的方法(__)
实例化子类的对象
访问带_的对象变量
访问父类中的__xxx方法
访问子类中的__xxx方法

class A:
    def __init__(self, a1, a2, _a3):
        self.a1 = a1
        self.a2 = a2
        self._a3 = _a3

    def __print_fun(self):
        print("This is A fun")


class B(A):
    def __print_fun(self):
        print("This is B fun")


b = B(1, 2, 3)
print(b._a3)
# 访问父类中的__xxx方法
b._A__print_fun()
# 访问子类中的__xxx方法
b._B__print_fun()



'''
3
This is A fun
This is B fun
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值