python鱼new 发表于 2022-11-21 14:17:35

__new__方法解释

    def __deepcopy__(self, memo):
      cls = self.__class__ # self.__class__将实例变量指向类,
      result = cls.__new__(cls)
      memo = 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:32:10

本帖最后由 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

阿奇_o 发表于 2022-11-21 14:44:12

本帖最后由 阿奇_o 于 2022-11-21 14:45 编辑

认真多读几下 官方文档,你就知道__new__到底是干嘛用的了。。

当然前提是,你得先搞清楚 各个OOP基础概念,以及最关键的 "在Python中,到底什么是对象"?。。

具体是什么我都懒得解释了,毕竟之前费时费力解释过几次了, 。。 {:10_250:}


页: [1]
查看完整版本: __new__方法解释