python第九节:类的使用(3)

类的继承:

一个类继承 另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类 ,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

创建子类时,必须在括号内指定父类的名称。子类和父类可以不再同一个py文件中。

继承关系中,父类的__init__方法不会被自动调用,如果需要,必须在子类中明确调用它。

例子1:

在test20240117.py文件中:

复制代码
class Dog():

    pet_shop = '萌宠小屋'



    def __init__(self, name, age):

        self.name = name

        self.age = age

#坐def sit(self):

        print(self.name.title() + " is now sitting.")

#打滚def roll_over(self):

        print(self.name.title() + " rolled over!")



    def _say_hi(self):

        print("say hi!")

在test20240307.py文件中:

复制代码
import test20240117 as test



class Dog2(test.Dog):



    def __init__(self):

        pass



    def sit(self):

        print("子类sit")



dog2 = Dog2()

dog2.sit()

结果:

"C:\Program Files\Python312\python.exe" D:/pythonProject/test/test20240307.py

子类sit

重写父类的方法

在子类中定义一个方法,和父类的方法同名,子类中的方法将覆盖父类中方法。

复制代码
class Animal():

    pet_shop = '萌宠小屋'

    def __init__(self, name, age):

        self.name = name

        self.age = age



    def say_hi(self):

        print("say hi!")





class Dog(Animal):

    pet_shop = '汪汪队'

    def __init__(self, name, age):

        self.name = name

        self.age = age

#坐def sit(self):

        print(self.name.title() + " is now sitting.")

#打滚def roll_over(self):

        print(self.name.title() + " rolled over!")



    def say_hi(self):

        print("wang wang!")



animal = Animal('动物',2)

animal.say_hi()

dog = Dog('狗子',3)

dog.say_hi()

结果:

say hi!

wang wang!

例子:多重继承,按照在在子类定义时,括号中的顺序继承,同名的优先继承排在前面的类中的方法。

复制代码
class Animal():

    pet_shop = '萌宠小屋'

    def __init__(self, name, age):

        self.name = name

        self.age = age



    def say_hi(self):

        print("say hi!")



    def say_ok(self):

        print("animal say ok!")



class livestock():

    def __init__(self, name, age):

        self.name = name

        self.age = age



    def say_hi(self):

        print("家畜!")



    def eat(self):

        print('家畜吃饭!')



    def say_ok(self):

        print("livestock say ok!")



class Dog(Animal,livestock):

    pet_shop = '汪汪队'

    def __init__(self, name, age):

        self.name = name

        self.age = age

#坐def sit(self):

        print(self.name.title() + " is now sitting.")

#打滚def roll_over(self):

        print(self.name.title() + " rolled over!")



    def say_hi(self):

        print("wang wang!")



animal = Animal('动物',2)

animal.say_hi()

dog = Dog('狗子',3)

dog.say_hi()

dog.eat()

dog.say_ok()

结果:

say hi!

wang wang!

家畜吃饭!

animal say ok!

在子类中调用父类的方法,使用super()关键字。

例子:

复制代码
class Animal():

    pet_shop = '萌宠小屋'

    def __init__(self, name, age):

        self.name = name

        self.age = age



    def say_hi(self):

        print("Animal say hi!")



    def say_ok(self):

        print("animal say ok!")



class Dog(Animal):

    pet_shop = '汪汪队'

    def __init__(self, name, age,sex):

        super().__init__(name, age)

#坐def sit(self):

        super().say_hi()

        print(self.name.title() + " is now sitting.")

#打滚def roll_over(self):

        print(self.name.title() + " rolled over!")



    def say_hi(self):

        print("wang wang!")



dog = Dog('旺财',5,'female')

dog.sit()

结果:

Animal say hi!

旺财 is now sitting.

相关推荐
Hylan_J2 小时前
【VSCode】MicroPython环境配置
ide·vscode·python·编辑器
软件黑马王子2 小时前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
莫忘初心丶2 小时前
在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
python·ubuntu·flask·gunicorn
闲猫2 小时前
go orm GORM
开发语言·后端·golang
李白同学4 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?5 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
失败尽常态5235 小时前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447745 小时前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农5 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿5 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法