super() | Python从入门到精通:高阶篇之三十一

简介: 本节重点介绍了super的用法,super() 可以用来获取当前类的父类,并且通过super()返回对象调用父类方法时,不需要传递self。

方法的重写override | Python从入门到精通:高阶篇之三十

super()

我们仍然以Animal和Dog为例。

class Animal:
    def run(self):
        print('动物会跑~~~')

    def sleep(self):
        print('动物睡觉~~~')


class Dog(Animal):
    def bark(self):
        print('汪汪汪~~~') 

    def run(self):
        print('狗跑~~~~')    

现在我们在Animal中添加属性。

    def __init__(self,name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter    
    def name(self,name):
        self._name = name

此时在Dog中创建对象

d = Dog() 

执行结果:

image.png

父类中的所有方法都会被子类继承,包括特殊方法,也可以重写特殊方法。此时先需要给Dog类添加属性。
修改:

d = Dog('旺财') 
# d.name = '小黑'

print(d.name)  

执行结果:

image.png
image.png

重写特殊方法,在Dog类中定义一个age属性。

class Dog(Animal):

    def __init__(self,name,age):
        self._name = name
        self._age = age

    def bark(self):
        print('汪汪汪~~~') 

    def run(self):
        print('狗跑~~~~')   

    @property
    def age(self):
        return self._age

    @age.setter    
    def age(self,age):
        self._age = age      

d = Dog('旺财',18) 
d.name = '小黑'

print(d.name)       
print(d.age) 

执行结果:

image.png

name属性已经在父类中定义,此时希望可以直接调用父类的__init__来初始化父类中定义的属性。

    def __init__(self,name,age):
        Animal__init__(self,name)
        self._age = age

d = Dog('旺财',18) 
print(d.name)       
print(d.age) 

image.png

但是这个时候方法被写死,只能调用父类(Animal)中的属性。如果Dog类的父类更换,则需要修改的程序则会繁琐。不建议使用,我们需要一个动态获取父类的方法。

super() 可以用来获取当前类的父类,并且通过super()返回对象调用父类方法时,不需要传递self。

super().__init__(name)

执行结果:

image.png

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
4天前
|
存储 程序员 API
Python 入门指南(五)(4)
Python 入门指南(五)
12 1
|
1天前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
18 7
|
2天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
4天前
|
Python 索引 C语言
Python3从零基础到入门(2)—— 运算符-3
Python3从零基础到入门(2)—— 运算符
|
4天前
|
Python
Python3从零基础到入门(2)—— 运算符-2
Python3从零基础到入门(2)—— 运算符
Python3从零基础到入门(2)—— 运算符-2
|
4天前
|
Python C语言 存储
Python3从零基础到入门(2)—— 运算符-1
Python3从零基础到入门(2)—— 运算符
Python3从零基础到入门(2)—— 运算符-1
|
4天前
|
存储 C语言 Python
|
4天前
|
Python Windows
|
4天前
|
NoSQL 测试技术 API
Python 入门指南(七)(4)
Python 入门指南(七)
9 0
|
4天前
|
测试技术 程序员 数据库
Python 入门指南(七)(3)
Python 入门指南(七)
7 0