我无法在Python中实例化一个简单类
我想通过一个文件来生成一个Python类。这个文件非常简单,叫做testy.py:
def __init__(self,var):
print (var)
当我尝试实例化它时,我得到了:
>>> import testy
>>> testy('1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
然后,我尝试了其他方法:
class testy_rev1:
def __init__(self,var):
print (var)
我再次尝试实例化它,结果是:
>>> import testy_rev1
>>> a=testy_rev1('1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
>>> a=testy_rev1.testy_rev1('1')
1
我想要的是一种从文件中导入它的方法,而不需要使用:
import <module name>.<module name>
3 个回答
1
import x
是用来引入一个叫做 x
的模块。import y.x
则是从一个叫做 y
的模块或包中引入 d
模块。这个模块里的内容可以用 x.stuff
或 y.x.stuff
来表示。这就是它的工作方式,语言不会为了你的方便而改变哦;)
你也可以使用 from module import thingy
来引入特定的东西。但一般来说,直接引入整个模块更受欢迎,这有原因的(这样可以更清楚地知道内容来自哪里,避免名字冲突,因为“明确总比模糊好”)!
2
有一个叫做 testy.py 的文件,里面有这些内容:
class testy_rev1:
def __init__(self, var):
print (var)
你需要做其中一个:
>>> import testy
>>> testy.testy_rev1('1')
或者:
>>> from testy import testy_rev1
>>> testy_rev1('1')
或者(不推荐,因为你看不到定义是从哪里来的):
>>> from testy import *
>>> testy_rev1('1')
除此之外,我不知道你还能怎么做。
2
第一次尝试失败是因为你只定义了一个函数,而没有定义一个类(你在第二次尝试中修正了这个问题)。
第二次尝试失败是因为你把 import
语句当成了Java中的 import
语句。在Python中,import
是用来创建一个模块对象,这样你就可以访问这个模块里面的内容。如果你想在不先指定模块的情况下使用模块中的类,可以这样做:
from my_module import MyClass
a = MyClass()
顺便提一下,你在第二次尝试中的打印方法在 __init__
方法后面没有缩进。这可能只是你在这里发布时的格式错误,但这样会导致代码无法按你预期的方式运行。