Допустим, есть библиотечная функция 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
...
OR
class CommercialPack(object):
def __init__(self, pack):
self.pack = pack
Вместо этого я ищу элегантное решение, как я уже сказал, какое-то приведение типов или все, что я могу элегантно сделать в Python.
Большое спасибо.