所以我有信心现在使用函数,并传递值。
所以例如
def myfunction(arg1,arg2,arg3):
print 'my args %s %s %s' % (arg1, arg2, arg3)
然后我可以按如下方式调用该函数
myfunction(arg1,arg2,arg3)
我想做的是将myfunction移动到MyClass中:
MyClass():
myfunction(arg1,arg2,arg3)
我不知道如何传递这些args(变量)或从外部调用它们,因为所有在线示例似乎都不符合这种情况。
对不起,如果这是非常基本的/基本的,但我正在努力在我的理解中跳过这个差距。
答案 0 :(得分:3)
您需要定义您的类,然后将其用作方法。 如果该方法不是静态的,那么在使用该方法之前,您需要创建该类的实例。例如:
class MyClass(object):
def myfunction(self, arg1, arg2, arg3):
print 'my args %s %s %s' % (arg1, arg2, arg3)
# usage
my_class_instance = MyClass()
my_class_instance.myfunction('1', '2', '3')
顺便说一句,我发现很难相信你找不到任何相关信息,因为这是课程的基本用法。
答案 1 :(得分:1)
我建议您先阅读有关类的教程:https://docs.python.org/2/tutorial/classes.html当您在类中定义方法时,Python会将当前实例作为第一个参数传递,除非您告诉它不要。惯例是调用第一个参数self
。因为您的函数与当前实例无关,所以您需要staticmethod
:
MyClass():
@staticmethod
myfunction(arg1,arg2,arg3):
print 'my args %s' % (arg1, arg2, arg3)
请注意,此处没有self
参数,因为这是一个静态方法。然后你打电话给:
MyClass.myfunction("a","b","c")
阅读此问题以获取更多信息:What is the difference between @staticmethod and @classmethod in Python?
答案 2 :(得分:1)
类不仅仅是函数的包装器,它们提供了新的抽象级别。我强烈建议您阅读文档https://docs.python.org/2/tutorial/classes.html和阅读一般的面向对象编程。
首先,您的班级设置不正确:
class MyClass():
def __init__(self):
#classes usually want to have a constructor
pass
其次,你班级中的每个函数都需要将self作为第一个参数:
def myfunction(self, arg1, arg2, arg3):
#functionality here
然后你必须创建一个类
的实例instance = MyClass()
#instance will be of type MyClass.
您现在可以在该实例上调用该函数:
instance.myfunction('1','2','3')