有关python和类的问题
|
我有一个基类,还有一些派生自Python的类:
class Base:
def Foo(self):
pass
# First derived class
class Der1(Base):
def OwnFoo(self):
# Do something 1
def OwnFoo2(self):
# Do something 2
def Foo(self):
# Do something 3
# Second derived class
class Der2(Base):
def OwnFoo(self):
# Do something 1
def OwnFoo2(self):
# Do something 2
def Foo(self):
# Do something 3
问题是:
我在Der1
中有一些预定义的代码。 Der2
中的几乎所有功能都执行相同的操作。如何用更少的代码来编写?
我无法将该代码添加到父项中。家长班不应受到影响。
例如,Der2.OwnFoo
与Der1.OwnFoo
相同,也许python中有一些构造只是为了从第一类调用OwnFoo
而不再再次编写该代码?
我不能改变Der1
和Der2
的父母!应该是Base
。
没有找到相关结果
已邀请:
5 个回复
钾涎净介
当然,您可以将引用传递给父级,而不是字符串。我只是以这种方式进行演示的目的。 用法:
输出:
捐焦
作为
的子类,您已完成。
您想要在ѭ2added之内进行的任何行为都可以添加到类定义中。如果您在
中创建一个同名的新方法(例如
),则它将重载从
继承的默认方法。 编辑:如果您不能更改父级,请将要继承的所有行为放在基类中,请记住您可以重载或自定义子类中的任何方法。 在代码中:
您可以执行一个“技巧”来调用从父代继承的原始方法,捕获返回值,然后自定义行为。仅当该方法实际返回一个值时,这才起作用;如果该方法在该类中操作属性,则可能很危险,除非您想要并期望它。 在代码中:
魄龟呸筹
它的父级是什么意思(例如,它所属的类及其继承的方法和属性)?你怎么能改变这个?
貉骂
和
共享许多代码,则应将其放在超类中;否则,请使用以下代码:由于无法触碰
,请在两者之间引入一个类:
(根据您的班级等级,其他人推荐的“从
2ѭ\”选项也可能有效。)
骨酚柯
子类
变成怎么样?