[轉載]python中super出現的TypeError: must be type, not classobj 原因及解決

原文轉載自 http://blog.csdn.net/andos/article/details/8973368


示例如下

  1. class A():  
  2.      def __init__(self):pass  
  3.   
  4. class B(A):  
  5.      def __init__(self):  
  6.            super(A, self).__init__()  

調用B創建對象時出現錯誤

  1. TypeError: must be type, not classobj   

查找資料之後發現,python中super只能應用於新類,而不能應用於經典類

所謂新類就是所有類都必須要有繼承的類,如果什麼都不想繼承,就繼承到object類。下面是一個新類的例子

  1. class A(B):  
  2.      ....  

所謂經典類就是什麼都不用繼承的類,例如最初的A類就是經典類,下面是一個經典類的例子

  1. class A():  
  2.      ....  

產上上面的問題,而自己又不知道父類該繼承什麼,最簡單的方法就是讓它去繼承object類

將class A改爲如下

  1. class A(object):  
  2.     .....  

則再調用B的實例時,一切正常
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章