【问题标题】:How do I properly reference Python classes?如何正确引用 Python 类?
【发布时间】:2013-01-21 17:13:52
【问题描述】:

我正在编写我的第一个 Python 类。作为我的 java 程序员,我有这样的事情:

#class1.py
class class1:
    def __init__(self):
         #Do stuff here

在我当前的脚本中:

import class1
object = class1()

我收到了Name Error: name 'class1' is not defined

我也试过这个,但没有运气:

import class1
object = class1.class1()

我在这里得到的错误是AttributeError: 'module' object has no attribute 'class1'

我做错了什么?

【问题讨论】:

  • 文件/类的实际名称是什么?第二种方法应该有效。
  • tle.py/ tle。不知道为什么会有所不同...
  • @ThomasOrozco:不,不应该。模块名和类名不需要相同,也不是一回事。
  • @ThomasOrozco:啊,我错过了第二次尝试。
  • 这是一个附加说明。由于您是从 Java 转向 Python,因此您可能想了解 Python 中的良好编程实践。这个link 将告诉您关于良好 Python 实践所需了解的所有信息。

标签: python class module


【解决方案1】:

Python 导入是按模块,然后是模块的内容,因此对于您的 class1.py,它变为:

from class1 import class1

Python module docs

【讨论】:

  • 哇,这么简单...谢谢!
  • 嗯,这行得通,但它并没有解释为什么class1.class1() 模块已经成功导入后,class1.class1() 不能用作构造函数。
  • @JohnY 这本来可以,但在他的问题下的 cmets 中说他的文件名为 tle.py。所以他们导入了错误的模块。奇怪的是为什么在这种情况下没有 ImportError。
  • @StuartRobertson: 不,cmets 中的文件名 tle.py 只是为了确认 OP 没有碰巧选择与其他内容冲突的模块名称.出于问题的目的,模块是文件class1.py,包含类定义class1,如问题文本中所示。通常,您应该能够通过首先导入class1 模块,然后调用class1.class1() 来创建class1 的实例。
【解决方案2】:

在 Python 中,您可以导入模块。对于 class1.py 文件,您可以使用:

from class1 import class1

或者如果你有不止一个......

from class1 import *

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 2022-01-11
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多