从单独的文件导入类

det*_*lly 4 python import module class

所以我正在通过在python中乱搞类来熟悉面向对象的编程.下面是我尝试在解释器中实现的简单代码.

class Test(object):

    def set_name(self, _name):
        name = _name

    def set_age(self, _age):
        age = _age

    def set_weight(self, _weight):
        weight = _weight

    def set_height(self, _height):
        height = _height
Run Code Online (Sandbox Code Playgroud)

当我启动python时,我运行以下命令:

>>>import Test
>>>Test.set_name("Sean")
Run Code Online (Sandbox Code Playgroud)

然后我收到这个追溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'set_name'
Run Code Online (Sandbox Code Playgroud)

我将这一切都基于此处的官方模块文档.

我已经阅读了很多关于OOP的文档,但我还是很新的,所以我确信还有一些东西正在我脑海中.这个错误意味着什么?

在此先感谢您的帮助.

Pra*_*ota 6

看起来你正在导入模块 Test.你有一个叫做Test模块里面的类Test吗?

如果是这样,您需要直接导入该类,from Test import Test或者,如果您只想导入该模块,则需要将您的类称为Test.Test.

编辑:关于unbound method set_name()错误.您需要set_name在类实例上调用方法,而不是直接在类上调用.Test().set_name("Sean")将工作(注意()Test,其创建实例).

set name方法期望该类的实例Test作为第一个参数(self).因此,如果未在实例上调用该方法,则会引发错误.有一些方法可以通过显式提供实例作为第一个参数来直接从类中调用它.