标签分类
技术文章
当前位置:主页 > 计算机编程 > python > Python实现通过继承覆盖方法示例

Python实现通过继承覆盖方法实例讲解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:82

Python实现通过继承覆盖方法示例

这篇文章主要知识点是关于Python,继承,覆盖方法,Python实现通过继承覆盖方法示例,python中的继承是什么 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python Linux系统管理与自动化运维
  • 类型:Python Linux实战大小:170.5m格式:PDF出版:机械工业出版社作者:赖明星
立即下载
Python机器学习(塞巴斯蒂安)
  • 类型:大小:42.1MB格式:PDF出版:机械工业出版社作者:塞巴斯蒂安
立即下载

本文实例讲述了Python实现通过继承覆盖方法。分享给大家供大家参考,具体如下:

Python真是太动态了,所有的方法默认都是虚的。子类定义父类同名函数之后,父类函数被覆盖。

class P(object):
  def foo(self):
    print "I am a P-foo()"
class C(P):
  def foo(self):
    print "I am a C-foo()"
>>>p=P()
>>>c=C()
>>>p.foo()
I am a P-foo()
>>>c.foo()
I am a C-foo()

这就引出了一个问题:重写__init__不会自动调用基类的__init__。在C++中如果使用了派生类默认构造函数的话,是会自动调用基类的默认默认构造函数的。C++中调用非默认构造函数是显示调用基类构造函数来初始化基类部分的。

class P(object):
  def __init__(self):
    print "P's constructor"
class C(P):
  def __init__(self):
    print "C's constructor"
>>>c=C()
C's constructor

如果需要调用基类构造函数时,可将C类定义改为

class C(P):
  def __init__(self):
 P.__init__(self)
    print "C's constructor"

或者

class C(P):
  def __init__(self):
 super(C,self).__init__()
    print "C's constructor"

使用super(className,self).functionName(没有self!!)的重点是不需要提供父类,这意味着如果改变了类继承关系,只需要改变一行代码(class C(P)),此时寻找基类的事由super函数完成。

希望本文所述对大家Python程序设计有所帮助。

python中的继承是什么

python中的继承是什么

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

通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式主要有2类:实现继承、接口继承。

实现继承是指使用基类的属性和方法而无需额外编码的能力。接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构爹类方法)。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

继承的定义:

class Person(object):   # 定义一个父类
 
    def talk(self):    # 父类中的方法
        print("person is talking....")  
 
 
class Chinese(Person):    # 定义一个子类, 继承Person类
 
    def walk(self):      # 在子类中定义其自身的方法
        print('is walking...')
 
c = Chinese()
c.talk()      # 调用继承的Person类的方法
c.walk()     # 调用本身的方法
 
# 输出
 
person is talking....
is walking...

相关推荐:《Python教程》

以上就是python中的继承是什么的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 vue项目中使用md5加密以及、 详解vue axios封装请求状态、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:《Python并行编程参考手册》书评、笔记、下载

下一篇:详解flask框架实现连接sqlite3数据库方法

展开 +

收起 -

学习笔记
网友NO.813671

Python面向对象之继承和多态

本篇文章给大家分享的内容是关于Python面向对象之继承和多态,有着一定的参考价值,有需要的朋友可以参考一下 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称之为基类、父类或者超类(Base class、Supper class)。 比如,我们已经编写了一个名为Animal的class,有个run()方法可以直接打印: class Animal(object): def run(self): print('Animal is running...') 当我们需要编写Dog和Cat类时,就可以直接从Animal类继承: class Dog(Animal): passclass Cat(Animal): pass 对于Dog来说,Animal就是它的父类,对于Animal来说,Dog就是它的子类。Cat和Dog类似。 继承有什么好处呢?最大的好处就是子类获得了父类的全部功能。由于Animal实现了run()方法,因此,Dog和Cat作为它的子类,什么事也没干,就自动拥有了run()方法: dog = Dog()dog.run()cat = Cat()cat.run() Animal is running...Animal is running... 当然,也可以对子类增加一些方法,比如Dog类。 继承的第二个好处需要我们对代码做一点改进。你看到了,无论是Dog还是Cat,它们run()的时候,显示的都是Animal is running...,符合逻辑的做法是分别显示Dog is running...和Cat is running... ,因此,对Dog和Cat类改进如下: class Animal(object): def run(self): print('Animal is running...')cla……

网友NO.828942

Python面向对象程序设计之类的定义与继承简单示例

本文实例讲述了Python面向对象程序设计之类的定义与继承。分享给大家供大家参考,具体如下: 定义类: class A: def __init__(self, name): self.name = name def say(self): print self.name def __del__(self): print "delete: %s" % self.name 1. python类的所有方法定义都必须至少含有一个参数,也就是self参数。在方法定义时作为第一个参数存在,self参数是类实例的引用。 2. __init__ 方法相当于构造函数,在获取类实例的时候会执行。 3. __del__ 方法相当于析构函数,会由系统自动调用(类似垃圾回收),也可以通过del对象主动调用。 4. 上例在 __init__ 方法里定义了一个对象的变量name,可以在类内其他地方通过 self.name 引用。 获取类的实例并调用类方法: a = A('Jim') #不用newa.say() #JimA.say(a) #Jim 调用类的方法有两种方式: 1. 对象.方法名 ,此种方式self参数不需要指定,对象引用作为实参自动传入。 2. 类名.方法名 ,此种方式self参数需要指定为类实例的引用。 类变量和对象变量: class A: passa = A()print A.j #报错,因为A类中不存在类变量jA.i = 1 #在A类中添加类变量i,并赋值1print A.i #打印1print a.i #打印1,这里的a.i实际上取到的是类A的类变量i,非对象a的对象变量i(其尚不存在)a.j = 2 #在对象a中添加对象变量j,并赋值2print A.j #报错,因为A类中不存在类变量jprint a.j #打印……

网友NO.786810

Python子类继承父类构造函数详解

如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。 子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。 class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name) ) def getName(self): return 'Father ' + self.name class Son(Father): def getName(self): return 'Son '+self.name if __name__=='__main__': son=Son('runoob') print ( son.getName() ) 输出结果为: name: runoob Son runoob 如果重写了__init__ 时,实例化子类,就不会调用父类已经定义的 __init__,语法格式如下: class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name) ) def getName(self): return 'Father ' + self.name class Son(Father): def __init__(self, name): print ( "hi" ) self.name = name def getName(self): return 'Son '+self.name if __name__=='__main__': son=Son('runoob') print ( son.getName() ) 输出结果为: hi Son runoob 如果重写了__init__ 时,要继承父类的构造方法,可以使用 super 关键字: super(子类,self).__init__(参数1,参数2,....) 还有一种经典写法: 父类名称.__init__(self,参数1,参数2,...) class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name)) def getName(self): return 'Father ' + self.name class Son(Father): def __init__(self, name): super(Son, self).__init__(name) print ("hi") self.nam……

网友NO.260922

python中继承有什么用法?python继承的用法详解

本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 面向对象三大特征 1.封装:根据职责将属性和方法封装到一个抽象的类中 2.继承:实现代码的重用,相同的代码不需要重复的写 3.多态 单继承 继承的概念:子类拥有父类的所有属性和方法 继承的语法 class 类名(父类): def 子类特有的方法 Cat类是Animal类的子类,Animal类是Cat类的父类,Cat从Animal类继承 Cat类是Animal类的派生类,Animal类是Cat类的基类,Cat类从Animal类派生 1. class Animal(object): def eat(self): print '吃' def drink(self): print '喝' def run(self): print '跑' def sleep(self): print '睡' class Cat(Animal): # 子类拥有父类的所有属性和方法 def call(self): print '喵喵'class Dog(Animal): def bark(self): print '旺旺'class Hellokitty(Cat): def speak(self): print '我可以说日语' # 创建一个猫对象fentiao = Cat()fentiao.eat()fentiao.drink()fentiao.run()fentiao.sleep()fentiao.call() 2. 重写父类方法 1.覆盖父类的方法 2.扩展父类的方法 class Animal: def eat(self): print '吃' def drink(self): print '喝' def run(self): print '跑' def sleep(self): print '睡' class Cat(Animal): # 子类拥有父类的所有属性和方法 def call(self): print '喵喵' class Hellokitty(Cat): def speak(self): print '我可以说日语' def ……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明