我想通过文件生成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>
答案 0 :(得分:2)
尝试1失败,因为你没有定义一个类,只是一个函数(你通过尝试2修复)。
尝试2失败是因为您查看import
语句,就像它是Java import
语句一样。在Python中,import
创建了一个模块对象,可用于访问其中的项目。如果要在模块中使用类而不先指定要使用以下模块的模块:
from my_module import MyClass
a = MyClass()
作为旁注,第二次尝试中的print方法在__init__
方法后没有缩进。当您在此处发布时,这可能只是我的格式错误,但它不会按预期运行代码。
答案 1 :(得分: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 :(得分:1)
import x
导入名为x
的模块。 import y.x
从模块/包d
导入模块y
。此模块中的任何内容均称为x.stuff
或y.x.stuff
。这就是它的工作原理,它们不会为了您的方便而改变语言;)
您始终可以from module import thingy
。但是考虑到导入整个模块通常比这更好......出于一个原因(为了更清楚地说明它来自哪里,以避免命名空间冲突,因为“显式优于mplicit”)!