本篇内容介绍了“python继承功能是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、继承特性
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("吃硬菜。。。。")
“python继承功能是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。