Python中文
首页
教程
问答
标签
搜索
登录
注册
继承的方法不返回d
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>当子类化基类时,继承的方法不能按预期工作。你知道吗</p> <p>我已经将我的模块分成了几个部分(如果很难理解的话,很抱歉),全部放在一个名为<code>Lan</code>的目录中。你知道吗</p> <p>在<code>Lan/__init__.py</code>我有:</p> <pre><code>from Bridge import Bridge from Ethernet import Ethernet from BaseInterface import BaseInterface def IfCtl(iftype): for cls in BaseInterface.__subclasses__(): if iftype in cls.iftypes(): return cls() raise ValueError </code></pre> <p>在<code>Lan/Bridge.py</code></p> <pre><code>from Lan.BaseInterface import BaseInterface class Bridge(BaseInterface): def __init__(self): BaseInterface.__init__(self) @staticmethod def iftypes(): return ['br', 'bridge'] def up(self): return 'Bringing up Bridge' def down(self): return 'Bringing down Bridge' </code></pre> <p>最后在<code>Lan/BaseInterface.py</code>:</p> <pre><code>from time import sleep class IfaceNotImplementedError(NotImplementedError): def __init__(self, methodName): self.methodName = methodName def __str__(self): return "Method %s must be subclassed" % self.methodName class BaseInterface(object): @staticmethod def iftypes(): return [''] def up(self): raise IfaceNotImplementedError('up()') def down(self): raise IfaceNotImplementedError('down()') def restart(self, delay = 1.0): self.down() sleep(delay) self.up() </code></pre> <p>除了从<code>BaseInterface</code>继承的<code>restart()</code>方法外,其他方法似乎都按预期工作。该方法似乎正在运行,因为当我运行它时有一个暂停,但我不返回任何数据。我希望看到被重写的<code>up()</code>和<code>down()</code>方法返回的文本。你知道吗</p> <pre><code>>>> from Lan import IfCtl >>> InterFace = IfCtl('br') >>> print InterFace.down() Bringing down Bridge >>> print InterFace.up() Bringing up Bridge >>> print InterFace.restart() None >>> </code></pre> <p>我做错什么了?你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您的<code>restart()</code>方法不返回任何内容。如果希望它携带up的返回值,则需要最后一行来读取<code>return self.up()</code>。否则,它总是像现在一样返回<code>None</code>——任何没有显式返回值的函数的默认返回。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在python3x中以垂直和水平的方式格式化列表?
9 回答
如何在python3x中创建datetime对象
2 回答
如何在python3x中取消pickle一个在python2.7中被pickle的模型?
4 回答
如何在python3x中格式化字典键
10 回答
如何在python3x中正确地通过sockets发送字典的内容?
1 回答
如何在python3x中调用if语句中的类和函数
8 回答
如何在Python3上三取二列表
7 回答
如何在python3上为方法搜索RegEx创建模式?
2 回答
如何在Python3上使用HTMLUnit和Selenium 2.45.0
1 回答
如何在Python3上使用telebot发送没有bot.polling()的消息
2 回答
如何在python3上使用Tkinter更新GUI?
2 回答
如何在python3上使用urllib和代理对HTTPS页面发出请求
6 回答
如何在Python3上制作按键
5 回答
如何在python3上发布图像和文本多部分表单?
10 回答
如何在Python3上安装Bob?
7 回答
如何在python3上安装Django?
9 回答
如何在python3上安装第三方模块
7 回答
如何在Python3上安装袖扣?
7 回答
如何在python3上打印当前日期?
1 回答
如何在Python3上执行此javascript代码?
10 回答