pyhton导入不同模块中的类出错问题
2016-11-24 本文已影响1052人
嘿嘿_小于同学
1、今天使用python实现工厂模式中,定义一个抽象的产品类Person,注意这个抽象类的模块名与类同名(Person.py),在Man模块中需要实现Person.py模块中的抽象类Person(同名真是坑)。就出现下面的错误。
import Person
"""具体的产品"男人""""
class Man(Person):
def say(self):
print '我是男人'
if __name__ == '__main__':
man = Man()
错误提示:
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
二、解决
Python的模块名个类名是在两个不同的名字空间中。比如我们输入import Person,此时并没有把Person类引入到当前的命名空间中。不信我们来试试。
![](https://img.haomeiwen.com/i2298200/1feb8a262b39df56.png)
从提示可以看出来,我们没有将Person类引入,而是将与类同名的Person模块引入进来(蜜汁尴尬)。
再来看一个:
![](https://img.haomeiwen.com/i2298200/ce03ecf084602cbf.png)