【问题标题】:Storing Method In Dictionary in Python在 Python 中的字典中存储方法
【发布时间】:2017-01-09 21:22:12
【问题描述】:

我正在尝试编写一个可以从各种子模块初始化类的程序。为了方便以后扩展模块,我想将它们的构造函数和一些关键函数存储在字典中。我遇到了功能未被识别为属性的问题,并且不确定如何解决此问题。对于构造函数来说似乎很好。代码应如下所示:

import my_class
class_ctor = {"my_class":my_class.my_class, ...}
class_func = {"my_class":my_class.my_class.func, ...}

my_inst = class_ctor["my_class"](what,ever,arguments)
my_inst.class_func["my_class"](some,other,arguments)

在 my_class.py 中:

class my_class:
   def __init__(self):
      ...
   def func(...):
      ...

有没有办法可以实现这样的目标?我见过一些示例,它们的调度程序以类似的方式工作,但希望将其抽象为方法。

感谢您的帮助!

【问题讨论】:

  • 什么不起作用?
  • 你不需要做这一切。如果要扩展类,可以继承父类作为子类
  • 如果我运行程序,它会显示“my_class 没有名为 func 的属性”。而且我不想继承这个类。我有一个程序的主要部分,它就像一种调度程序,根据用户想要运行的不同类调用函数。
  • 您必须与我们分享my_class.py 文件的内容。它将帮助我们更好地为您提供帮助
  • 好的,刚刚添加了。

标签: python class dictionary


【解决方案1】:

问题出在这一行:

my_inst.class_func["my_class"](some,other,arguments)

class_func 不属于my_inst(根据您显示的内容)。

【讨论】:

  • 是的,我想应该是class_func['my_class'](my_inst, some, other, arguments)
  • 糟糕,问题中的错字。我的意思是说该方法属于模块内的类。固定的。可能无法做到这一点。另一种选择是在模块中拥有一个函数,该函数将类的实例作为参数并随后调用该函数。
  • 是的!做到了。没想过自己传实例,还是学 Python 的 OOP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2016-01-19
  • 2011-10-29
相关资源
最近更新 更多