1. 程式人生 > >AttributeError: module 'XXX' has no attribute 'xxx' && TypeError: 'module' object is not callable

AttributeError: module 'XXX' has no attribute 'xxx' && TypeError: 'module' object is not callable

AttributeError: module 'XXX' has no attribute 'xxx' && TypeError: 'module' object is not callable

最近在呼叫python的類的時候總是提示:module 'XXX' has no attribute 'xxx'很是心塞

寫一個Pet類,然後想和Java一樣,有個主函式呼叫該類,可是各種報錯

#! /usr/bin/python3
# -*- coding=UTF-8 -*-
class Pet:
    def dog(self):
        pass 
    
    def cat(self):
        pass
    

檔案結構如下

PetMain檔案和Pet檔案都在同一個目錄下

1.import時報錯

#! /usr/bin/python3
# -*- coding=UTF-8 -*-
import Pet
Pet.cat()

在同一個目錄下直接import Pet類時編譯就不通過:

AttributeError: module 'Pet' has no attribute 'cat'

和Java不一樣,java在同一個路徑下的檔案是可以直接訪問到的,但是python不行需要路徑去訪問:

from  XXX.xxx.xx  import x,此時編譯的時候就不會出錯了,但是還有問題

from com.study.test import Pet

Pet().cat()

2.執行的時候報錯

from com.study.test import Pet

Pet().cat()

路徑編譯沒有報錯,結果在執行時候又報錯

TypeError: 'module' object is not callable

原來是類初始化導致的,java初始化只要 new Pet()就可以了,但是python要

Pet.Pet()

from com.study.test import Pet

Pet.Pet().cat()

再次執行就沒有報錯了。