【发布时间】:2017-10-30 15:57:56
【问题描述】:
我有一个具有多种方法的 python 类。我已经通过@staticmethod 实例定义了我的方法,我想从我的主函数(main_function)内部调用我的类的其他方法。我想我需要self 参数来从我的主函数调用我的其他函数,并且我想在创建我的类的实例时将此参数传递给我的main_function。
class myclass:
@staticmethod
def function1(param1)
print "function1"
@staticmethod
def main_function(self, param1)
function1(param1)
my_object = myclass()
my_object.main_function(param1)
我收到了这个错误:
TypeError: main_function() takes exactly 2 arguments (1 given)
问题是我在创建实例时没有self 参数。我试图从我的方法定义中删除 @staticmethod 关键字并删除所有使用的 self 参数,但这不起作用。
【问题讨论】:
-
那你为什么要使用一个类呢?不要使用类作为命名空间,使用模块。
-
是的,这就是模块的用途。
-
类用于创建捆绑数据和功能的自定义对象。如果您没有 state,请不要使用类。
-
静态方法正是不采用
self的方法,因为它不需要调用其他实例方法,或者会这样做通过类名。 -
@Stateless:到目前为止,您还没有说明任何原因,所以我们无法为您提供帮助。不用你推理,我将仅依靠我 20 年的 Python 开发经验,告诉你应该使用模块,而不是类。
标签: python class methods arguments self