美文网首页
Python面向对象继承

Python面向对象继承

作者: b8a7c7695f14 | 来源:发表于2020-04-05 14:03 被阅读0次
image

面向对象继承

面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象编程的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

继承,其实这样理解,就是我写了一个爸爸类和儿子类,爸爸有钱,儿子却没钱,于是儿子决定继承爸爸,调用爸爸的钱(爸爸类的变量和方法)。

继承一个类,基本使用下面的五个方法。

(1)直接调用父类属性方法;

爸爸有钱,儿子却没钱,于是儿子用爸爸的钱

class Father():
    def __init__(self):
        self.money= 1000 
    def action(self):
        print('调用父类的方法')

class Son(Father):
    pass

son=Son()     # 子类Son 继承父类Father的所有属性和方法
son.action()  # 调用父类属性
输出:调用父类的方法
son.money     # 调用父类属性
输出:1000

(2)强制调用父类私有属性方法;

爸爸说,你这个儿子,老是用我的钱,我决定藏私房钱。儿子试试super()拿你的私房钱,但是这里需要注意super()强制调用父类私有属性方法,就是重写方法,私有变量是不能用supper继承不了,还不可以访问父类中的私有属性方法的变量,就是儿子是拿不了私房钱的。

class Father():
    __money  = 1000 #私有变量是继承不了

    def __action(self):  # 父类的私有方法
        money = 1000
        print('调用父类的方法')

class Son(Father):

    def action(self):
        super()._Father__action()
        print(money) 

son=Son()
son.action() 

调用父类的方法
name 'money' is not defined

(3):重写父类属性方法;

突然间儿子竟然有钱,决定不用爸爸的钱,用自己的钱,决定重写父类属性方法。

class Father():
    def __init__(self):
        self.money = 0

    def action(self):
        print('调用父类的方法')

class Son(Father):
    def __init__(self):
        self.money = 1000

    def action(self):
        print('子类重写父类的方法')

son=Son()     # 子类Son继承父类Father的所有属性和方法
son.action()  # 子类Son调用自身的action方法而不是父类的action方法
son.money     # 自己的1000

(4) 调用父类的init方法

如果爸爸把钱放在__init__,儿子有没有可能拿到爸爸的钱,都不是私有变量,就不是私房钱,当然可以拿到

我们先看看如果不用super,能不能拿到。

class Father():
    def __init__(self):
        self.money = 1000

class Son(Father):
    def __init__(self):
        pass

son=Son()
print(son.money)

# 报错:'Son' object has no attribute 'money'

连super不用就像拿钱,太小看你爸爸我了。

class Father():
    def __init__(self):
        self.money = 1000

class Son(Father):
    def __init__(self):
        super().__init__()
        #也可以用 Father.__init__(self)  这里面的self一定要加上(上面两个相同)

son=Son()
print(son.money) 

1000

(5):继承父类初始化过程中的参数

有的时候,爸爸需要挣钱和花钱,就是我们初始化过程中的参数,儿子很好奇,决定看看爸爸口袋还要多少钱。

我们这里先写死了earn_money和spend_money

class Father():
    def __init__(self):
        self.earn_money=1000
        self.spend_money= -500

class Son(Father):
    def __init__(self):
        super().__init__()
        #也可以用 Father.__init__(self)  这里面的self一定要加上

    def add(self):
        return self.earn_money+self.spend_money

son=Son()
print(son.add())

500

儿子发现爸爸钱不够,于是偷偷的拿了点钱过来。

class Father():
    def __init__(self,a,b):
        self.earn_money = a
        self.spend_money= b
    def add(self):
        return self.a + self.b

#调用父类初始化参数a,b并增加额外参数c
class Son(Father):
    def __init__(self,a,b,c=1000):  # c固定值
        Father.__init__(self,a,b)  
        self.son_money = c

    def add(self):
        return self.earn_money+self.spend_money + self.son_money

son=Son(1000,-500)   # 所以c可以不用显示表达出来
print(son.add())     # 调用子类add函数

1500

以上基本涵盖了Python类的继承,调用父类的属性和方法基础内容,可以自己动手写些案例,加深理解。

相关文章

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • Python面向对象-类的继承

    继承是面向对象的重要特性之一,作为面向对象的Python,接下来让我们探讨一下Python的继承机制 为什么继承?...

  • python的面向对象

    python的面向对象(ObjectOriented,OO)-面向对象编程-基础-公有私有-继承-组合,Minxi...

  • Python中面向对象的第二大特征——继承

    Python中面向对象有三大特征:封装,继承,多态 今天就说说面向对象中的第二大特征——继承 一丶什么是继承 ...

  • Python面向对象-继承

    继承介绍 继承指的是类与类之间的关系,是一种什么是什么的关系,功能之一就是用来解决代码重用问题。继承是一种创建新类...

  • Python面向对象--继承

    1、单继承(代码的重用) 语法:class DerivedClassName(BaseClassName),其中D...

  • Python面向对象继承

    面向对象继承 面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象...

  • Python面向对象-继承

    面向对象继承 多个子类在概念上是一致的,所有就抽象出一个父类。多个子类的共性,可以提取到父类中。在实际的工作过程中...

  • 26.Python之面向对象的三大特性(继承、封装、多态)

    Python之面向对象的三大特性(继承、封装、多态) 继承与派生继承继承是一种新建类的方式,在Python中支持一...

网友评论

      本文标题:Python面向对象继承

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