Python中文
首页
教程
问答
标签
搜索
登录
注册
从Python中的基类对象创建对象
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个基类:</p> <pre><code>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) </code></pre> <p>以及一个扩展它的类:</p> ^{pr2}$ <p>假设我有一个<code>Animal</code>对象,创建于此:</p> <pre><code>>>> fluffy_as_animal = Animal('dog', 'kibbles') </code></pre> <p>在python中有没有一种简单的方法可以从<code>fluffy_as_animal</code>创建一个<code>Pet</code>对象,而不是实际写出:</p> <pre><code>>>>> fluffy_as_pet = Pet(fluffy_as_animal.name, fluffy_as_animal.food) </code></pre> <h2>更新</h2> <p>我做这个实现的原因是我有一个类,它有一个函数,它返回一组<code>Animal</code>类型的对象,所有这些对象我都想实际用作<code>Pet</code>对象:</p> <pre><code>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.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(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 </code></pre> <p><code>AnimalStore</code>和<code>PetStore</code>位于不同的模块中。<code>AnimalStore</code>是标准<code>Animal</code>API的一部分,不会改变。基本上,我想扩展<code>Animal</code>API,方法是使用与动物相同的机制获取宠物列表,并且我希望能够利用动物API已经为其<code>Animal</code>和<code>AnimalStore</code>类提供的所有其他内置函数。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你可以的</p> <pre><code>fluffy_as_pet = object.__new__(Pet) fluffy_as_pet.__dict__ = fluffy_as_animal.__dict__.copy() </code></pre> <p>或者</p> ^{pr2}$ <p>但这两种方法可能更像是一种黑客行为,而不是一个干净的解决方案。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
8 回答
如何添加表示整数的擦边字符串?
3 回答
如何添加要在Bokeh中使用的新font.ttf文件?
9 回答
如何添加要显示的矩阵XY轴编号和XY轴
5 回答
如何添加计数?
5 回答
如何添加计数器函数?
2 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
4 回答
如何添加计数器来跟踪while循环中的月份和年份?
9 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
5 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
10 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
4 回答
如何添加评论拉梅尔亚姆
9 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
4 回答
如何添加谷歌地点自动完成到Flask?
5 回答
如何添加超时、python discord bot
4 回答
如何添加超过1dp的检查
10 回答
如何添加距离方法
6 回答
如何添加跟随游戏的敌人精灵
5 回答
如何添加路径以便python可以找到程序?
6 回答
如何添加身份验证/安全性以使用happybase访问HBase?
3 回答