类的高阶性质

作者: 布拉豆 | 来源:发表于2017-04-30 22:40 被阅读26次

类即对象,就像哺乳动物,属性是可以遗传的,这点就是类的继承

儿子相对父亲,就像是子类相对父类,子类有父类的全部属性,而且子类也可以重新定义自己的属性值,来覆盖父类的属性值

当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类,而被继承的class称为基类、父类。

如下示例代码:

class a():
    def run(self):
        print('a class...')
class b(a):
    def run(self):
        print('b class...')
class c(a):
    def hello(self):
        print('hello c')
  • 首先定义一个a类,里面有一个run()方法
  • 然后定义一个b类,继承与a类,而且里面有一个和a类一样的方法run,且会覆盖a的run方法
  • 再定义一个c类,同样继承a类,但是并未重写run方法,而是重新定义一个新的方法hello

下面来初始化类的值,以及使用函数名看看情况

ac = a()
bc = b()
cc = c()
ac.run()
# 结果:a class...
bc.run()
# 结果:b class...
cc.run()
# 结果:a class...
cc.hello()
# 结果:hello c

从上面结果看,可以得到如下结论:

  • ac打印是a class...,正是a类中定义的输出
  • bc打印是b class...,说明b的重新定义run并覆盖了父类的run方法
  • cc打印是a class...,c并没有定义run,它的run方法是从父类a里面继承过来的,自己定义了hello方法

继承:子类从继承的父类中,得到父类的全部属性和方法


接下来就是类的特性——多态

多态,意思就是多种形态,这里用动物来作比较最合适

首先定义一个动物的父类:

class Animal():
    def get_type(self):
        print("Animal...")

然后定义一个猴子类,继承动物:

class Monkey(Animal):
    def get_type(self):
        print("Monkey...")

再定义一个小白鼠类,继承动物:

class Mouse(Animal):
    def get_type(self):
        print("Mouse...")

接着定义一个人类,继承猴子:

class People(Monkey):
    def get_type(self):
        print("People...")

定义好三个类之后,然后定义一个适用动物类的函数:

def get_animal(animal):
    animal.get_type()

get_animal函数接收一个动物类的对象参数,然后运行它的get_type()方法

最后实例化刚才定义的所有类,然后调用get_animal函数看看

animal = Animal()
monkey = Monkey()
mouse = Mouse()
people = People()
get_animal(animal)
# 结果:Animal...
get_animal(monkey)
# 结果:Monkey...
get_animal(mouse)
# 结果:Mouse...
get_animal(people)
# 结果:People...

以上代码就是检测类的多态。都是基于同一个父类,所以肯定有父类的方法,但此时他们不再是父类或者是同一种类,而是各种形态的类。

这也就是类的多态性【有点万变不离其宗的意思】


一个小白肯定会问的小问题:定义一个类,括号内有的是空,有的是放入父类。我记得每个类都会继承object类,为什么有的可以写空呢?

答:python3隐式继承了object,所以python3中写不写继承object都是没有区别的 。【不过在Python2.x是有区别的】


Python3教程--传送门

相关文章

  • 类的高阶性质

    类即对象,就像哺乳动物,属性是可以遗传的,这点就是类的继承 儿子相对父亲,就像是子类相对父类,子类有父类的全部属性...

  • 工作谈,谈工作2

    高阶算命术 我们介绍了四大类高阶模型:认知能力、行为模式、语言模式与环境模式,并且介绍了各类模式中几类常见的高阶模...

  • 第十二章 高级选择器

    伪类和伪元素区别 伪类一个冒号,伪元素两个冒号 一,伪类选择器 伪类性质: 伪类性质:加冒号不会对页面产生布局结...

  • 2019-04-09

    形容词,表达的是一种性质,以前的逻辑家认为性质与类不同。认为性质是内涵,类是外范。。现代逻辑观点,内涵是可以外范化...

  • 高阶组件的定义

    先来回想一下高阶函数的定义吧,高阶函数是指:接收函数作为输入,或者输出另一个函数的一类函数,被称作高阶函数,那么高...

  • 《知识论》读书笔记(二十五)

    《知识论》读书笔记(二十五) 2022年8月10日 B:所谓性质 1,所谓“性质” 所谈为性质的“类”(各性质之所...

  • 可以查看招投标信息的网站都有哪些?

    可以查看招投标信息的网站都有哪些?而根据招标网站的性质可以分为四类,分别是:官方性质、事业单位性质、企业性质、民办...

  • Kotlin笔记(13) — 高阶函数

    前言 在kotlin的特殊函数中,有类函数叫高阶函数,那么今天就让我们来学习下高阶函数的相关知识吧。 今天涉及知识...

  • 策划文案完全手册笔记

    企划作为高阶决策判断的依据 六类高阶决策判断的项目 投资决策(Investment)海外投资设厂决策海外购并他厂决...

  • 【头马】AC18演讲稿《不能饿死音乐》

    诠释朗读高阶演讲手册 第四单元:单人单角演讲目标:理解独角戏的概念和性质 理解角色的特质,在动作和...

网友评论

    本文标题:类的高阶性质

    本文链接:https://www.haomeiwen.com/subject/egwxtxtx.html