0

我有一个名为 Point2.py 的 python 文件,其中包含以下代码

class Point():   
    def __init__(self,x=0,y=0):
        self.x = x
        self.y = y
    def __str__(self):
        return "%d,%d" %(self.x,self.y)

现在在解释器中,我这样做了:

>>> import Point2
>>> p1 = Point()

但我收到一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable

Point2.py 文件中有 Point 类。为什么我无法将其分配给 p1。当我尝试时:

>>> from Point import *

>>> p1 = Point() 

有用

我将文件重命名为 Point.py 然后我做了

>>> import Point
>>> p1 = Point 

这可行,但分配值并不容易。

然而,

>>> from Point import *
>>> p1 = Point(3,4)  

作品。

我的问题是为什么当我导入 Point 和从 Point import *. 哪种导入方式好?

类和文件名有什么关系吗?

4

1 回答 1

4

回答为什么:

>>> import Point2
>>> p1 = Point()

不起作用,是因为您没有直接导入类 Point()。要访问该Point()课程,您需要执行以下操作:

>>> import Point2
>>> p1 = Point2.Point()

或者

>>> from Point2 import Point
>>> p1 = Point()

从模块中导入from x import *所有内容。因此,如果foo()模块中有一个函数bar,doingfrom bar import foo将导入该函数,因此您可以做foo()而不必做bar.foo()。这就是为什么当你这样做时from Point import *,它会像你不需要做的那样工作Point.Point()


哪种方式导入更好?好吧,from x import *除非你打算使用x. 它也可能与您自己脚本中的函数混淆。

from x import yor import x,看看这个问题

于 2013-03-17T03:47:58.803 回答