python super()继承父类

class Foo(object):
  def __init__(self, frob, frotz):
    self.frobnicate = frob
    self.frotz = frotz

class Bar(Foo):
  def __init__(self, frob, frizzle):
    super(Bar,self).__init__(frob,34)
    self.frazzle = frizzle

new = Bar("hello","world")
print (new.frobnicate )
print (new.frazzle )
print (new.frotz )

>>>
hello
world
34

时间: 2024-11-13 03:38:32

python super()继承父类的相关文章

python 子类继承父类__init__(转载)

转载: http://www.jb51.net/article/100195.htm 前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 . 注意:这个名称的开始和结尾都是双下划线. 父类A ? 1 2 3 4 5 6 class A(object):  def __init__(self, name):   self.name=name   prin

Python 子类继承父类

写过程序的都知道类,就是面向对象的意思,编程的水平大致分为几个层次,基本语法,函数,面向对象,数据结构,架构,越往上水平越高. 在创建类的时候,我们通常把具有相关性的函数包装为一个类,类也可以嵌套,叫父类和子类,尤其在python中,所有的对象都可以当成一个variable,下面给出一个类嵌套的例子. class Metric(object): def __init__(self): self.var = "Hadoop" def print_metric(self): print &

Python super继承详解

MRO(Method resolution order)是python用来解析方法调用顺序的,mro中记录了一个类的所有基类的类类型序列,super不是简单地调用基类的方法,而是按照MRO中的顺序来调用类的方法.使用super()时,应该在所有类中使用,否则就可能发生有的类构造函数没有调用的情况.#!/usr/bin/python# -*- coding: utf-8 -*-class A(object): def __init__(self): print 'A __init__' super

python 子类继承父类的__init__方法

父类A class A(object): def __init__(self, name): self.name=name print "name:", self.name def getName(self): return 'A ' + self.name 子类不重写__init__,实例化子类时,会自动调用父类定义的__init__ class B(A): def getName(self): return 'B '+self.name if __name__=='__main__

python super()继承和多继承

class A: def __init__(self): self.n = 2 def add(self, m): print('self is {} @A.add'.format(self)) self.n += m class B(A): def __init__(self): self.n = 3 def add(self, m): print('self is {} @B.add'.format(self)) super().add(m) self.n += 3 class C(A):

Python进阶-继承中的MRO与super

摘要本文讲述Python继承关系中如何通过super()调用"父类"方法,super(Type, CurrentClass)返回CurrentClass的MRO中Type的下一个类的代理:以及如何设计Python类以便正确初始化. 1. 单继承中父类方法调用 在继承中,调用父类方法是很有必要的.调用父类方法的场景有很多: 比如必须调用父类的构造方法__init__才能正确初始化父类实例属性,使得子类实例对象能够继承到父类实例对象的实例属性: 再如需要重写父类方法时,有时候没有必要完全摒

Python中深浅拷贝 垃圾回收与 super继承(六)

1 python拷贝 深拷贝,浅拷贝 与引用三者的区别 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 d = copy.deepcopy(a) #对象拷贝,深拷贝 a.append(5) #修改对象a a[4].append('c') #修改对象a中的['a', 'b']数组对象 print('a = ', a) print( 'b = ', b) print(

python使用super()调用父类的方法

如果要在子类中引用父类的方法,但是又需要添加一些子类所特有的内容,可通过类名.方法()和super()来调用父类的方法,再个性化子类的对应函数. 直接使用类名.方法()来调用时,还是需要传入self为第一个参数,而使用super()调用则python自动将self传入,因此使用super()比较简洁. 如下animal基类和cat子类,cat类的__init__( )构造函数比父类多一个leg参数,eat()函数比父类多一行输出,通过super()调用父类的函数,则不需要将重复的部分再写一遍.

(一)Python入门-6面向对象编程:08多重继承-mro()-super()获得父类的定义

一:多重继承 Python支持多重继承,一个子类可以有多个“直接父类”.这样,就具备了“多个父类”的特点.但是由于,这样会被“类的整体层次”搞的异常复杂,尽量避免使用. 二:mro() Python支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将 “从左向右”按顺序搜索. MRO(MethodResolution Order):方法解析顺序. 我们可以通过mro()方法获得 “类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找的. [操作]多重继承-mro()

python之子类继承父类时进行初始化的一些问题

直接看代码: class Person: def __init__(self): self.name = "jack" class Student(Person): def __init__(self): self.school = "一中" stu = Student() print("学生的姓名是:",stu.name) 此时,程序是不能正常运行的,运行之后报错: 这是为什么呢? __init__相当于是python类的构造方法,在类进行实例