1. 程式人生 > 其它 >python 類:專有方法(魔法方法)

python 類:專有方法(魔法方法)

除了類的私有屬性__private_attrs、私有方法__private_method之外,還有類的專有方法,包括:__init__、__del__、__len__、......

對於類的專有方法的說法之一是:在合適的時間,會自動呼叫其魔法方法,比如初始化時呼叫__init__,具體見連結

在CenterPoint模型中,一直疑惑何時給NuScenesDataset類物件(obj_cls(**args))的成員變數__nusc__infos賦值的。除錯多次,沒有直接呼叫賦值過程。原來是在是__len__中呼叫load_infos函式實現的,__len__會自動呼叫。需要說明的s是,在load_infos函式實現中會涉及其他成員變數,也需要它們存在。比如需要在self.test_mode=test_mode、self._class_names = class_names等完成賦值後,self.__len__才會執行。不過,對於返回值???

    def __len__(self):

        if not hasattr(self, "_nusc_infos"):
            self.load_infos(self._info_path)

        return len(self._nusc_infos)