【python 多继承】教程文章相关的互联网学习教程文章

Python多重继承:__new__要调用哪些?【代码】

我有一个班级家长.我想为Parent定义一个__new__,因此它在实例化时会有一些魔力(为什么,请参阅脚注).我也希望子类继承这个和其他类来获得Parent的功能. Parent的__new__将返回子类的base和Parent类的子类的实例. 这是如何定义子类:class Child(Parent, list):pass但现在我不知道__new__在父母的__new__中调用什么.如果我调用object .__ new__,上面的Child示例抱怨应该调用list .__ new__.但是父母怎么会知道呢?我使它工作,所以它遍...

python中的动态调度和继承【代码】

我正在尝试修改Guido的多方法(动态调度代码): http://www.artima.com/weblogs/viewpost.jsp?thread=101605 处理继承和可能的乱序参数. 例如(继承问题)class A(object):passclass B(A):pass@multimethod(A,A) def foo(arg1,arg2):print 'works'foo(A(),A()) #worksfoo(A(),B()) #fails有没有比迭代检查每个项目的super()更好的方法,直到找到一个? 例如(论证排序问题)从碰撞检测的角度来看,我正在考虑这个问题. 例如foo(Car(),Truc...

如何继承类的方法并让它们在python中访问自己的成员变量【代码】

我是Python的新手,我一直试图找出将一堆凌乱的类方法(访问成员变量)迁移到一个单独的Utils.py类型模块中以清理的最佳方法.方法名称仍然需要由基类继承,但是它们还需要访问parnet类方法.我正在详细介绍背景,因为我认为可能有更好的python方法来解决这个问题. 基本上我需要做类似下面的事情,如果我试图通过继承做到这一点:(我玩过超级,但我无法用这种方式解决)class Graph(GraphUtils):graph_size = 10def print_size(self):print se...

python – 类继承:构造函数应该兼容吗?多重继承的情况?

参见英文答案 > Should constructors comply with the Liskov Substitution Principle? [closed] 3个recommended principles of object-oriented programming中的一个是Liskov substitution principle:子类的行为应该与它的基类相同(警告:这实际上不是Liskov原理的正确描述:参见PS). 是否建议它也适用于构造函数?我主要考虑Python及其__init __()方法,但这个问题适用于任何具有继承的面向对...

python – Django模型继承覆盖字段属性中使用的变量【代码】

我试图覆盖继承的Django模型中的一些默认值.对于我需要的型号,我有一堆不同的图像尺寸,所需的字段是90%相同. 我尝试创建要使用的基本模型,并且将添加子模型所需的任何其他字段. 我遇到的问题是图像只使用我设置的“默认”值,并且不会在子模型中被覆盖.我想要完成的是什么? 谢谢!class ImageLink(models.Model):#Default Image SizesSIZED_WIDTH = 500SIZED_HEIGHT = 400THUMB_WIDTH = 50THUMB_HEIGHT = 50#Name of the linknam...

第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解【图】

第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解 一、 引言 上两节介绍了构造方法的语法及参数,说明了构造方法是Python的类创建实例后首先执行的方法,并说明如果类没有重写构造方法,Python将会给出默认的__init__方法。上述介绍适用于自定义类没有自定义父类的情况,如果自定义类是从其他自定义类派生的,又会怎样呢? 二、 构造方法与继承 为了保障相关逻辑的正确性,在子类重写构造方法时,必须调用超类...

python多继承下的查找顺序-MRO原则演变与C3算法【图】

在python历史版本中的演变史 python2.2之前: MRO原则:只有经典类,遵循深度优先(从左到右)原则,存在的问题:在有重叠的多继承中,违背重写可用原则解决办法是再设计类的时候不要设计这样有问题的类 python2.2版本: MRO原则:经典类:遵循深度优先(从左到右)原则引入新式类:优化了结构新式类存在的问题:无法检测出有问题的继承,有可能还会违背局部优先的原则例如:python2.3-2.7版本: MRO原则:经典类:遵循深度优先(...

python – 元类冲突,多重继承和实例作为父级

我一直在搞乱Python的黑暗艺术,我想帮助理解.给定一个类Foo,这里有一些我试图从它继承的方法: > A级(Foo) – 工作,毫无疑问> B类(Foo()) – 作品提供Foo有一个合适的__new__方法(我提供)> C类(Foo(),Foo) – 在与B相同的条件下工作> class D(Foo,Foo()) – 给出了着名的元类错误:Traceback (most recent call last): File “test.py”, line 59, in class D(Foo, Foo()):TypeError: metaclass conflict: the metaclass...

我可以从python类中删除一个继承的嵌套类吗?【代码】

例如.这可能吗?class Foo(object):class Meta:passclass Bar(Foo):def __init__(self):# remove the Meta class here?super(Bar, self).__init__()解决方法:您不能从继承的基类中删除类属性;您只能通过设置具有相同名称的实例变量来屏蔽它们:class Bar(Foo):def __init__(self):self.Meta = None # Set a new instance variable with the same namesuper(Bar, self).__init__()你自己的类当然也可以用类变量覆盖它:class Bar(F...

畅游Python 十一:面向对象编程方式三大特性:封装、继承、多态【图】

一、封装 封装就是将内容封装到某个地方,以后再去调用被封装在某处的内容。 所以,在使用面向对象的封装特性时,需要注意: 将内容封装到某处 从某处调用被封装的内容 第一步:将内容封装到某处self 是一个形式参数,当执行 obj1 = Foo(jackson, 18 ) 时,self 等于 obj1 当执行 obj2 = Foo(alex, 78 ) 时,self 等于 obj2 所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来...

基本继承(在python中)【代码】

用户, 我有一个关于继承的基本问题(在python中).我有两个类,其中一个继承自另一个类class p:def __init__(self,name):self.pname = nameclass c(p):def __init__(self,name):self.cname = name有没有可能我可以创建一个父对象和几个引用SAME父对象的子对象?它应该像父对象包含几个变量那样工作,每当我从子进入相应的变量时,我实际上从父进程访问变量.即如果我为一个孩子更改它,它也会被更改为所有其他childes,并且数据只存储...

python – Django管理模型继承是否可能?【代码】

管理模型中是否可以继承? 像例子中考虑以下, 文件:models.pyclass AbstractModel ( models.Model ):# Meta Information common to all classesauthor = models.ForeignKey(auth.models.User , null = False ,related_name="%(class)s_related_author" ) # The user who created editor = models.ForeignKey(auth.models.User , null = True,related_name="%(class)s_related_editor" ) # The user who last edited ...

Python:我应该在这里使用委托还是继承?【代码】

我在思考是否应该使用继承或委托来实现一种包装类.我的问题是这样的:假设我有一个名为Python的类.class Python:def __init__(self):...def snake(self):""" Make python snake through the forest"""...def sleep(self):""" Let python sleep """...……还有更多的行为.现在我有一些代码需要一个Anaconda,它几乎就像一个Python,但略有不同:一些成员的名称和参数略有不同,其他成员添加了新的功能.我真的想在Python中重用代码.因此...

python – 动态更改Django模板继承?

我有一个包含以下内容的模板:{%extends“main / main-template.html”%} 我还想要一个完全相同的模板,只有它{%extends“main / main-template-quick.html”%}将相同的代码复制并粘贴到新文件中似乎违反了DRY,这样我就可以更改模板了.有没有办法动态选择超级模板? 如果没有,是否有一种好方法可以执行以下操作:使用不同的模板重复使用相同的{%block%}及其内容.同时,不要违反DRY. 我也对其他能够做到这一点的模板语言持开放态...

Python 提高 多继承顺序

多继承以及MRO顺序 1. 单独调用父类的方法# coding=utf-8print("******多继承使用类名.__init__ 发生的状态******") class Parent(object):def __init__(self, name):print('parent的init开始被调用')self.name = nameprint('parent的init结束被调用')class Son1(Parent):def __init__(self, name, age):print('Son1的init开始被调用')self.age = ageParent.__init__(self, name)print('Son1的init结束被调用')class Son2(Parent):...