比方说,有一个库函数调用get_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,而不是包的功能。在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
...
OR
class CommercialPack(object):
def __init__(self, pack):
self.pack = pack
就像我说我在找一个优雅的解决方案,而不是,某种类型转换或什么我可以做的在Python中优雅。
非常感谢。
相关:http://stackoverflow.com/questions/5516263/creating-an-object-from-a-base-class-object-in-python/5516330#5516330 – 2011-04-14 13:11:56
@Sven:感谢您的链接。 – pocoa 2011-04-14 13:40:51