我有两个脚本。第一个包含一个类,其中定义了类变量,以及使用这些类变量的函数。第二个脚本在其自身的函数内调用类和函数。
这种设置对于类中的函数很好,但是添加类变量导致以下错误。谁能解释为什么,请以及我需要做什么来解决?
谢谢
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'
答案 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