Python中文
首页
教程
问答
标签
搜索
登录
注册
我能从超类实例化子类对象吗
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有以下示例代码:</p> <pre><code>class A(object): def __init__(self, id): self.myid = id def foo(self, x): print 'foo', self.myid*x class B(A): def __init__(self, id): self.myid = id self.mybid = id*2 def bar(self, x): print 'bar', self.myid, self.mybid, x </code></pre> <p>使用时,可以生成以下内容:</p> ^{pr2}$ <p>现在假设我有更多的子类<code>class C(A):</code>和{<cd2>}。我也知道这个id总是可以放在B、C或D中,但绝不会同时出现在其中的两个中。在</p> <p>现在我想调用A(23)并得到一个正确子类的对象。像这样:</p> <blockquote> <pre><code>>>> type(A(2)) <class '__main__.B'> >>> type(A(22)) <class '__main__.D'> >>> type(A(31)) <class '__main__.C'> >>> type(A(12)) <class '__main__.B'> </code></pre> </blockquote> <p>这是不可能的还是有可能的只是糟糕的设计?这样的问题该怎么解决?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>一般来说,当一个超类有任何子类的知识时,这不是一个好主意。在</p> <p>从OO的角度考虑您想做什么。在</p> <p>超类为该类型的所有对象提供通用行为,例如动物。然后子类提供行为的专门化,例如狗。在</p> <p>从“isa”关系的角度来考虑,即狗是动物。在</p> <p>动物就是狗是没有道理的。在</p> <p>高温</p> <p>干杯</p> <p>罗布</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
5 回答
如何添加表示整数的擦边字符串?
8 回答
如何添加要在Bokeh中使用的新font.ttf文件?
4 回答
如何添加要显示的矩阵XY轴编号和XY轴
5 回答
如何添加计数?
10 回答
如何添加计数器函数?
1 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
8 回答
如何添加计数器来跟踪while循环中的月份和年份?
1 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
3 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
1 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
1 回答
如何添加评论拉梅尔亚姆
8 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
10 回答
如何添加谷歌地点自动完成到Flask?
10 回答
如何添加超时、python discord bot
5 回答
如何添加超过1dp的检查
3 回答
如何添加距离方法
9 回答
如何添加跟随游戏的敌人精灵
5 回答
如何添加路径以便python可以找到程序?
6 回答
如何添加身份验证/安全性以使用happybase访问HBase?
6 回答