从单独的文件导入类
问题描述:
因此,我正在通过在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
当我启动蟒蛇,我运行以下命令:
>>>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。
我已经阅读了很多关于面向对象的文档,但我还是很新的,所以我确信还有一些东西在我头上。那个错误是什么意思?
在此先感谢您的帮助。
答
看起来像你正在导入模块Test
。你在Test
模块里有一个名为Test
的课程吗?
如果是这样,您需要直接将该类导入为from Test import Test
或者,如果您只想导入模块,则需要将您的类引用为Test.Test
。
编辑:关于unbound method set_name()
错误。您需要在类实例上调用set_name
方法,而不是直接在类上调用。 Test().set_name("Sean")
将工作(请注意()
后Test
创建实例)。
集名称方法需要类Test
的实例作为第一个参数(self
)。因此,如果在实例上未调用该方法,该方法将引发错误。通过显式提供实例作为第一个参数,可以直接从类中调用它。
感谢您的快速回复!我想我对你的问题的答案不是很积极。我只是有一个名为Test.py的文件,并在该文件中是上面发布的代码。根据我上面链接到的模块文档,我想我确实在模块中有一个类。然而,当我更换'与进口Test''从测试进口Test',我得到这个错误: '回溯(最近通话最后一个): 文件“”,1号线,在 类型错误:不受约束的方法set_name ()必须用Test实例作为第一个参数调用(代替str实例)' –
detroitwilly
2012-02-20 18:01:54
@detroitwilly查看我的编辑 – 2012-02-20 18:19:28
再次感谢您的快速回复!你的建议奏效了,我可以毫无错误地使用set_name()方法。 – detroitwilly 2012-02-20 18:29:05