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类引入到当前的命名空间中。不信我们来试试。
从提示可以看出来,我们没有将Person类引入,而是将与类同名的Person模块引入进来(蜜汁尴尬)。
再来看一个: