python - 使用子类实例对象调用父类方法时获取 NoneType 返回值
问题描述
我编写了一个带有方法的类,该方法仅在我希望它们覆盖父类的某些方法时才覆盖它们。其他时候,我调用该方法的 super 以便只执行在父类方法中编写的内容。我观察到这在我存储数据时有效,但在我检索数据时无效。显示确切问题的简化版:
# parent class
class A(object):
def __init__(self):
self.var = {}
def assigner_method(self, value):
self.var = value
def returning_method(self):
return self.var
# child class
class B(A):
def returning_method(self):
#Do nothing
super(B, self).returning_method()
# What obviously works
class C(object):
def some_method(self):
self.obj = A()
self.obj.assigner_method("ABCD")
resp = self.obj.returning_method()
print resp
# What doesn't work:
class D(object):
def some_method(self):
self.obj2 = B()
self.obj2.assigner_method("ABCD")
resp = self.obj2.returning_method()
print resp
现在,这有效:
print C().some_method()
ABCD
这失败了:
print D().some_method()
None
在这里和那里放一些打印,我看到使用 self.obj2 设置数据 self.var 是可行的。同样,当使用 self.obj2 获取数据时,父类返回_method 会打印returning data ABCD
,但是当在调用者处打印时,它说接收到的数据是 NoneType。我想我在这里做了一些根本性的错误。任何帮助表示赞赏。
解决方案
推荐阅读
- python - 我在做一些 openCV 工作时收到此错误代码
- c# - 在 OWIN JWT OAuth 中使用 Clockskew 的正确方法
- java - DeferredResult 的 Spring MVC 单元测试不调用超时回调
- unity3d - 我怎样才能让我的机器人角色保持在飞机的边界内?
- html - 为同一页面上的多个表格格式化 CSS 样式
- ipython - 如何将 jupyter notebook (ipython) 转换为幻灯片而不使用命令行
- c# - WPF 等效于 Winform 的 KeyEventArgs - 使用特定键调用 KeyDown 事件
- python - ValueError:检查输入时出错:预期dense_16_input有2维,但得到的数组形状为(60000、28、28)
- ruby-on-rails - Ruby on Rails - 防止 rails 在注册之前创建会话 cookie
- javascript - React Native:如何在客户端存储聊天记录?