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.

相关推荐
B站_计算机毕业设计之家34 分钟前
Spark微博舆情分析系统 情感分析 爬虫 Hadoop和Hive 贴吧数据 双平台 讲解视频 大数据 Hadoop ✅
大数据·hadoop·爬虫·python·数据分析·1024程序员节·舆情分析
Q一件事40 分钟前
R语言随机森林分析显示R方和P值
开发语言·随机森林·r语言
我是华为OD~HR~栗栗呀40 分钟前
华为OD-Java面经-21届考研
java·c++·后端·python·华为od·华为·面试
Mr.Jessy44 分钟前
JavaScript学习第六天:函数
开发语言·前端·javascript·学习·html·1024程序员节
刺客-Andy1 小时前
Python 第二十节 正则表达式使用详解及注意事项
python·mysql·正则表达式
九皇叔叔2 小时前
Java循环结构全解析:从基础用法到性能优化
java·开发语言·性能优化
sulikey2 小时前
Qt 入门简洁笔记:从框架概念到开发环境搭建
开发语言·前端·c++·qt·前端框架·visual studio·qt框架
zzzsde2 小时前
【C++】stack和queue:优先级队列的使用及底层原理
开发语言·c++
新子y2 小时前
【小白笔记】「while」在程序语言中的角色
笔记·python
java1234_小锋2 小时前
[免费]基于Python的YOLO深度学习垃圾分类目标检测系统【论文+源码】
python·深度学习·yolo·垃圾分类·垃圾分类检测