Jor*_*ter 5 python multiple-inheritance
我试图在python中围绕多重继承.
假设我有以下基类:
class Structure(object):
def build(self, *args):
print "I am building a structure!"
self.components = args
Run Code Online (Sandbox Code Playgroud)
让我们说我有两个继承它的类:
class House(Structure):
def build(self, *args):
print "I am building a house!"
super(House, self).build(*args)
class School(Structure):
def build(self, type="Elementary", *args):
print "I am building a school!"
super(School, self).build(*args)
Run Code Online (Sandbox Code Playgroud)
最后,创建一个使用多重继承的类:
class SchoolHouse(School, House):
def build(self, *args):
print "I am building a schoolhouse!"
super(School, self).build(*args)
Run Code Online (Sandbox Code Playgroud)
然后,我创建一个SchoolHouse对象并build在其上运行:
>>> sh = SchoolHouse()
>>> sh.build("roof", "walls")
I am building a schoolhouse!
I am building a house!
I am building a structure!
Run Code Online (Sandbox Code Playgroud)
所以我想知道 - School班上发生了什么?有没有办法让Python以某种方式运行?
我特别想知道因为有相当数量的Django包提供Managers模型定制.但是,如果没有将一个或另一个管理器写为继承另一个管理器,似乎没有办法将它们组合在一起.只是导入两者并以某种方式使用它们会很好,但看起来它无法完成?
另外我想在Python中指向一个关于多重继承的好的入门是有帮助的.我之前和Mixins做过一些工作,真的很喜欢使用它们.我想我只是想知道当它们从同一个基类继承时,是否有任何优雅的方法来组合来自两个不同类的功能.
是的,傻我.这是一个错字.我感到非常愚蠢.我保证,当我超越现实生活的时候,我总是把正确的课程放进去,只有当我切割和粘贴试试这件事时我才搞砸了.
Sve*_*ach 15
你的super()来电SchoolHouse是错的.
它是:
super(School, self).build(*args)
Run Code Online (Sandbox Code Playgroud)
它应该是:
super(SchoolHouse, self).build(*args)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |