我有一个基类:class Animal(object):
def __init__(self, name=None, food=None):
self.name = name
self.food = food
def eat(self):
print "The %s eats some %s" % (self.name, self.food)
以及一个扩展它的类:
^{pr2}$
假设我有一个Animal对象,创建于此:>>> fluffy_as_animal = Animal('dog', 'kibbles')
在python中有没有一种简单的方法可以从fluffy_as_animal创建一个Pet对象,而不是实际写出:>>>> fluffy_as_pet = Pet(fluffy_as_animal.name, fluffy_as_animal.food)
更新
我做这个实现的原因是我有一个类,它有一个函数,它返回一组Animal类型的对象,所有这些对象我都想实际用作Pet对象:class AnimalStore(object):
def fetch(count, query=None, server=None, *args, **kwargs):
connection = connect_to_server(server)
resp = connection.fetch_animals(query)
objects = parse_response(resp)
animals = []
for a in objects[:count]:
animals.append(Animal(a['name'], a.['food']))
return animals
class PetStore(AnimalStore):
def fetch(count, query=None, server=None, *args, **kwargs):
query = 'type=pet AND %s' % query
animals = super(PetFactory, self).fetch(count, query, server, *args, **kwargs)
pets = []
for animal in animals:
pets.append(magic_function(animal))
return pets
AnimalStore和PetStore位于不同的模块中。AnimalStore是标准AnimalAPI的一部分,不会改变。基本上,我想扩展AnimalAPI,方法是使用与动物相同的机制获取宠物列表,并且我希望能够利用动物API已经为其Animal和AnimalStore类提供的所有其他内置函数。在