【发布时间】:2011-04-14 13:00:08
【问题描述】:
假设有一个名为 get_pack() 的库函数,它返回一个 Pack 对象:
class Pack(object):
def __init__(self, name, weight):
self.name = name
self.weight = weight
...
我想要做的是将这个对象包装到我的对象中,比如说 CommercialPack,它有几个有用的功能:
class CommercialPack(Pack):
def get_delivery_price(self, distance):
return self.weight * PER_KM_PRICE * distance
...
然后创建一个返回 CommercialPack 而不是 Pack 的函数。在其他一些语言(如 Delphi 或 Java)中,您可以即时键入强制转换该对象。所以我想要这样的东西:
def get_commercial_pack():
return CommercialPack(get_pack())
然后您就可以轻松获得所需的一切。因为我希望我的 CommercialPack 对象具有 Pack 对象所具有的所有属性和功能。我只想将它包装在我的新课程中。基本上我不想做这样的事情:
class CommercialPack(object):
def __init__(self, pack):
self.name = pack.name
self.weight = pack.weight
...
或
class CommercialPack(object):
def __init__(self, pack):
self.pack = pack
我正在寻找一个优雅的解决方案,而不是像我说的那样,某种类型转换或任何我可以在 Python 中优雅地做的事情。
非常感谢。
【问题讨论】: