|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def __deepcopy__(self, memo):
- cls = self.__class__ # self.__class__将实例变量指向类,
- result = cls.__new__(cls)
- memo[id(self)] = result # 使用内置函数id()查看python对象的内存地址
- for k, v in self.__dict__.items():
- if k not in ('logger', 'logger_file_handler'):
- setattr(result, k, copy.deepcopy(v, memo))
- # shallow copy of loggers
- result.logger = copy.copy(self.logger)
- # use setters to configure loggers
- result.logger_file = self.logger_file
- result.debug = self.debug
复制代码
有没有哪位大佬,通俗易懂的方式解释下 cls.__new__(cls) 的作用
本帖最后由 jackz007 于 2022-11-21 14:35 编辑
- def __deepcopy__(self, memo):
- cls = self.__class__ # __new__() 需要用到 cls,取对象自己类名 __class__ 作为目标类名 cls
- result = cls.__new__(cls) # 调用 cls 类的 __new__() 方法,创建一个属于 cls 类的新对象 result
复制代码
所以,result = cls . __new__(cls) 就是为了创建一个和 self 同类的新对象 result
|
|