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)