python 对象创建_从Python中的基类对象创建对象
我有一個(gè)基類: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)
以及一個(gè)擴(kuò)展它的類:
^{pr2}$
假設(shè)我有一個(gè)Animal對(duì)象,創(chuàng)建于此:>>> fluffy_as_animal = Animal('dog', 'kibbles')
在python中有沒有一種簡(jiǎn)單的方法可以從fluffy_as_animal創(chuàng)建一個(gè)Pet對(duì)象,而不是實(shí)際寫出:>>>> fluffy_as_pet = Pet(fluffy_as_animal.name, fluffy_as_animal.food)
更新
我做這個(gè)實(shí)現(xiàn)的原因是我有一個(gè)類,它有一個(gè)函數(shù),它返回一組Animal類型的對(duì)象,所有這些對(duì)象我都想實(shí)際用作Pet對(duì)象: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是標(biāo)準(zhǔn)AnimalAPI的一部分,不會(huì)改變。基本上,我想擴(kuò)展AnimalAPI,方法是使用與動(dòng)物相同的機(jī)制獲取寵物列表,并且我希望能夠利用動(dòng)物API已經(jīng)為其Animal和AnimalStore類提供的所有其他內(nèi)置函數(shù)。在
總結(jié)
以上是生活随笔為你收集整理的python 对象创建_从Python中的基类对象创建对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巴巴腾机器人怎么开机_【巴巴腾智能机器人
- 下一篇: python的sorted函数用法_Py