类变量-缺少一个必需的位置参数

时间:2019-05-11 12:05:31

标签: python python-3.x

我有两个脚本。第一个包含一个类,其中定义了类变量,以及使用这些类变量的函数。第二个脚本在其自身的函数内调用类和函数。

这种设置对于类中的函数很好,但是添加类变量导致以下错误。谁能解释为什么,请以及我需要做什么来解决?

谢谢

obj1.py:

class my_test_class():

    def __init__(self):

        self.test1 = 'test1'
        self.test2 = 'test2'
        self.test3 = 'test3'

    def test_func(self, var):

        new_var = print(var, self.test1, self.test2, self.test3)

obj2.py

from obj1 import *


def import_test():

    target_var = my_test_class.test_func('my test is:')
    print(target_var)

import_test()

错误:

Traceback (most recent call last):
  File "G:/Python27/Test/obj2.py", line 9, in <module>
    import_test()
  File "G:/Python27/Test/obj2.py", line 6, in import_test
    target_var = my_test_class.test_func('my test is:')
TypeError: test_func() missing 1 required positional argument: 'var'

1 个答案:

答案 0 :(得分:1)

正如评论者所指出的那样,由于test_func是一个类方法,因此我们需要使用一个类实例对象来调用它。

另外print函数返回None,所以new_var = print(var, self.test1, self.test2, self.test3)会分配new_var=None,因此,如果要返回变量,则需要分配new_var = ' '.join([var, self.test1, self.test2, self.test3]),这会创建一个字符串所有单词和return new_var

之间有一个空格

结合所有这些,代码如下所示

class my_test_class():

    def __init__(self):

        self.test1 = 'test1'
        self.test2 = 'test2'
        self.test3 = 'test3'

    def test_func(self, var):

        #Assign value to new_var and return it
        new_var = ' '.join([var, self.test1, self.test2, self.test3])
        return new_var

def import_test():

    #Create instance of my_test_class
    test_class = my_test_class()
    #Call test_func using instance of my_test_class
    print(test_class.test_func('my test is:'))

import_test()

输出将为my test is: test1 test2 test3