python继承功能是什么
admin
2023-02-15 05:00:05
0

一、继承特性

1、什么是继承

继承就是让类和类之间产生父子关系,子类可以拥有父类的静态属性和方法。

[继承就是可以获取另外一个类中的静态属性和普通方法。(并非所有成员)]。

在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新 建的类称为派生类或子类。 注意:python中的继承分为:单继承和多继承。

2、继承中的子类和父类的概念

父类:用于被继承的类,称之为父类,也叫做基类,或者超类。

子类:继承其他类的类,称之为子类,也叫做派生类。

3、继承的作用 就是提高代码的重用率

练习1:创建Dog类和Cat类,分别设置name,gender,age属性和定义eat()、

class Animal(object):

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

        self.age=age

        self.name=name

        self.gender=gender

    def eat(self):

        print("吃。。。。")

    def sleep(self):

        print("睡。。。。")

    def __str__(self):

        return "性别{},年龄{}".format(self.name,self.gender,self.age)

class Dog(Animal):

    def bite(self):

        print("汪汪。。。")

xiaotiandog=Dog("哮天犬","母",21)

xiaotiandog.eat()

xiaotiandog.sleep()

xiaotiandog.bite()

结果:

吃。。。。

睡。。。。

汪汪。。。

3、查看继承的父类

格式:类名.bases

注意: (1).python3中如果一个类没有继承任何类,默认继承object类。我们管这种类叫 做新式类。

(2).object类,是python中的祖宗,所有的类都是从object类中继承下来的。

4、方法的覆写

子类中定义了和父类中相同的方法,我们叫做方法的复写(派生方法)。

实例对 象调用此方法 的时候就会调用自己类中的方法了。

练习1:定义一个Person类创建eat()方法,定义一个Student的类,创建eat()方 法, 规定学生去食堂吃饭,定义一个Boss类创建eat()方法,规定Boss去酒店吃。

class Person(object):

    def eat(self):

        print("吃饭")

class Student(Person):

    def eat(self):

        print("去食堂吃饭")

class Boss(Person):

    def eat(self):

        print("去酒店吃饭")

student=Student()

student.eat()

boss=Boss()

boss.eat()

结果:

去食堂吃饭

去酒店吃饭

5、super()

子类和父类有相同的方法,如果子类想调用父类相同的的方法。可以使用 super()方法。

在python3中,子类执行父类的方法也可以直接用super方法 ­­­>super() super默认省略了两个参数 第一个参数是类名,第二个参数是self。

两个参数可 以省略不传递例如 super(Student,self) super()还可以从类的外部使用 需要传递类名(本类的名称)和对象名

例如 super(Student,student)

格式: 父类类名.方法名称(self) 或者 super().方法名称()或者super(本类类名,对象名)

6、init()方法 ­ 子类继承父类,如果子类不复写父类的init()方法,

创建子类对象的时候会自动调用父类init()方法。 ­

子类继承父类,如果子类复习了父类的init()方法,

创建的子类对象的时候不会再调用父类的init() 方法。

­ 注意:python要求复习父类的init()方法时,需要调用父类的init()   因为存在隐患,

例如父类的初始化方法有参数,子类初始化无参数,子类再调 用父类   的参数的时候就会报错。

class People(object):

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

        print("person------>")

        self.name=name

        self.age=age

        self.sex=sex

    def say(self):

        print("大家好,我是{},今年{}岁,".format())

class Student(People):

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

        super().__init__(name,sex,age)

        self.score=score

    def talk(self):

        print("我是{},成绩{}".format(self.name,self.score))

s=Student("王五","男",23,89)

s.talk()

结果:

person------>

我是王五,成绩89

7、派生属性 属性的覆盖(派生属性):子类也可以添加自己新的属性或者在自己这里重新定义 这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与 父类重名,那么调用新增的属性时,就以自己为准了(属性的覆盖)。

8、私有属性私有方法在继承中的表现

父类中的私有方法和私有属性都是不能被子类继承下来的。

9、抽象类

之前我们定义了Person类实现了eat()、drink()方法, 每种人都会吃喝但是吃喝的地点不同,如果实现了方法体就浪费了。因此我们可 以只定义eat()方法,不实现方法体,这种形式我们可以将方法定义为抽象方 法,具有抽象方法的类就叫做抽象类。 抽象类是一个特殊的类,只能被继承,不能实例化,抽象类中可以有抽象方法和 普通方法。

(1) .定义抽象类 定义抽象类需要导入 abc模块。from abc import ABCMeta, abstractmethod

import abc

class Person(metaclass=abc.ABCMeta):

function(){ //技术指标 http://www.kaifx.cn/mt4/kaifx/1732.html

    @abc.abstractclassmethod

    def eat(self):

        pass

    @abc.abstractclassmethod

    def sleep(self):

        pass

    def breathe(self):

        print("呼吸空气")

class Man(Person):

    def eat(self):

        print("吃软饭。。。。")

    def sleep(self):

        print("睡学校。。。。")

class Women(Person):

    def eat(self):

        print("吃硬菜。。。。")

相关内容

热门资讯

身高缩了,房子小了,胆子也怯了... 据日经中文网7月24日报道,日本经济长期停滞催生了“不断缩小”的社会倾向,近年来日本人的平均身高持续...
广东省内铁路即将全线停运 作者 | 第一财经 南英今年第12号台风“红霞”已于7月24日凌晨生成,预计25日夜间至26日早晨在...
中美频繁高层互动,菲律宾好自为... 7月24日,菲律宾组织7艘公务船、3艘海警舰、1艘运鱼船,并唆使大量渔船位中国黄岩岛管辖海域非法聚集...
被要求补税2250万欧元的法国... ·贝尔纳·阿尔诺。(LVMH官网)他的“帝国”离不开这个国家的形象加持,而这个国家,也早已吃定了这一...
通派龙湖御潮云上:当极核地段遇... 在2026年的郑州楼市版图中,如果要寻找一个能够同时承载“主城确定性”与“产品革新力”的坐标,通派龙...
追光引路人—记国家级线上线下混... 人物名片:吴建丽,教授,黄河科技学院医学部教师。主持国家级线上线下混合式一流课程1门、河南省线上线下...
加总理表态:若谈判破裂,会对美... 据凤凰卫视报道,7月23日,加拿大总理卡尼与各省省长和地区领导人举行会议,商讨应对美国最新一轮关税威...
从北京望中东:和平,虽远在中国... ◆笔者参与的分论坛“维护中东和平:挑战与出路”正在进行中。今年7月举行的第十四届世界和平论坛上,中东...
巨大冲击!美国AI“闭源高价售... 日本计算机社会学专家塚越健司7月24日发表题为《中国AI“Kimi K3”引发巨大冲击——撼动美国A...
人民锐评:中国籍数学家首获全球... 历史性的突破!日前,第二十一届菲尔兹奖得主名单揭晓,北大2007级本科校友王虹、邓煜双双获奖,无数网...