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.

相关推荐
极小狐11 分钟前
如何构建容器镜像并将其推送到极狐GitLab容器镜像库?
开发语言·数据库·机器学习·gitlab·ruby
多多*44 分钟前
Java反射 八股版
java·开发语言·hive·python·sql·log4j·mybatis
正在走向自律44 分钟前
从0到1:Python机器学习实战全攻略(8/10)
开发语言·python·机器学习
FY_20181 小时前
键盘输出希腊字符方法
开发语言
西西弗Sisyphus1 小时前
Python 处理图像并生成 JSONL 元数据文件 - 灵活text版本
开发语言·python
Taichi呀1 小时前
PyCharm 快捷键指南
ide·python·pycharm
Stara05111 小时前
基于注意力机制与iRMB模块的YOLOv11改进模型—高效轻量目标检测新范式
人工智能·python·深度学习·神经网络·目标检测·计算机视觉·yolov11
Python猫2 小时前
付费专栏·Python潮流周刊电子书合集(epub、pdf、markdown)下载
python·计算机·pdf·电子书·资料
q567315232 小时前
Go语言多线程爬虫与代理IP反爬
开发语言·爬虫·tcp/ip·golang
Chandler242 小时前
Go语言即时通讯系统 开发日志day1
开发语言·后端·golang