【发布时间】:2016-07-19 10:50:01
【问题描述】:
所以我想要一个Point 和一个Area 类,类似于C# 的Point 和Size。下面是这两个类的简单实现:
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y)
# Many other magic methods too!
class Area:
def __init__(self, width=0, height=0):
self.width = width
self.height = height
def __add__(self, other):
return Area(self.width + other.width, self.height + other.height)
# Many other magic methods too!
如您所见,这两个类完全相同,除了一个有 x, y 而另一个有 width, height。
为这两者实现某种基类有什么好的解决方案?
【问题讨论】:
-
@Lucian 可能是因为 “正如你所看到的,这两个类是完全相同的,除了一个有
x, y而另一个有width, height。” 一个基类摆脱多个类中的重复代码。不是说这是最好的解决方案,而是a解决方案。 -
它们在构造中每个都需要两个参数,但这并不一定会使它们相关到足以证明公共父类的合理性。
-
@TigerhawkT3 他们都有大约 10 个共同的方法,它们做的事情完全相同......只是两个属性的名称不同......
-
这是真的 Markus,你的回答还可以,但代码总是应该非常直观且易于阅读,但那是另一回事了
-
@MarkusMeskanen 是的,这就是我的想法。
标签: python python-3.x subclass base-class