所以我正在通过在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
当我启动python时,我运行以下命令:
>>>import Test
>>>Test.set_name("Sean")
然后我收到了这个追溯:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'set_name'
我基于here找到的官方模块文档。
我已经阅读了很多关于OOP的文档,但我还是很新的,所以我确信还有一些东西正在我脑海中。这个错误意味着什么?
提前感谢您的帮助。
答案 0 :(得分: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
)。因此,如果未在实例上调用该方法,则会引发错误。有一些方法可以通过显式提供实例作为第一个参数来直接从类中调用它。