我无法在Python中实例化一个简单的类

时间:2010-08-30 12:09:23

标签: 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 个答案:

答案 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.stuffy.x.stuff。这就是它的工作原理,它们不会为了您的方便而改变语言;)

您始终可以from module import thingy。但是考虑到导入整个模块通常比这更好......出于一个原因(为了更清楚地说明它来自哪里,以避免命名空间冲突,因为“显式优于mplicit”)!