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

0 投票
3 回答
4443 浏览
提问于 2025-04-16 03:28

我想通过一个文件来生成一个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.stuffy.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__ 方法后面没有缩进。这可能只是你在这里发布时的格式错误,但这样会导致代码无法按你预期的方式运行。

撰写回答