无法理解如何将变量传递给类中的函数

时间:2015-12-11 20:58:55

标签: python

所以我有信心现在使用函数,并传递值。

所以例如

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(变量)或从外部调用它们,因为所有在线示例似乎都不符合这种情况。

对不起,如果这是非常基本的/基本的,但我正在努力在我的理解中跳过这个差距。

3 个答案:

答案 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')