pyhton导入不同模块中的类出错问题

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

再来看一个:

type(Person)
真是作死有没有?

以后还是将模块名和类名区分开来好了,这样的坑遇到就不要再犯。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容