python init和new区别

Python __init____new__ 的区别

python init和new区别wanglitou,

Python 中,__init____new__ 是两个特殊的魔法方法,用于初始化和创建对象。尽管它们的名称相似,但它们在功能和行为上存在着根本差异。本文将深入探讨 __init____new__ 的区别,并提供一些代码示例来说明它们的用法。

__new__

__new__ 方法是创建新对象的静态方法。它在实例化类时由 Python 解释器自动调用,在 __init__ 方法之前执行。__new__ 的主要职责是分配内存,初始化对象,并返回新创建的对象的引用。HTML在线运行.

以下是 __new__ 方法的语法:


def __new__(cls, *args, **kwargs):
# 创建新对象的逻辑
return object

__new__ 方法中,cls 参数表示创建对象的类,*args**kwargs 分别表示位置参数和关键字参数。这个方法必须返回一个指向新创建的对象的引用,如果返回 None,则表示对象创建失败。

__init__

__init__ 方法是实例化类时调用的构造函数。它的作用是初始化对象的属性。与 __new__ 不同,__init__ 在对象创建后才被调用,并且仅在返回非 None__new__ 方法后才会执行。SEO!JS转Excel!

相关阅读:  python中列表a[n-m:]什么意思

以下是 __init__ 方法的语法:批量打开网址.王利头.王利?


def __init__(self, *args, **kwargs):
# 初始化对象属性的逻辑
wangli?

__init__ 方法中,self 参数表示正在初始化的对象,*args**kwargs 分别表示位置参数和关键字参数。这个方法用于设置对象的属性,并进行任何必要的初始化操作。

两者的差异

__init____new__ 的主要区别在于:

  • 创建时机: __new____init__ 之前调用。
  • 目的: __new__ 负责创建对象,而 __init__ 负责初始化对象属性。
  • 返回类型: __new__ 返回新创建的对象的引用,而 __init__ 不返回任何值。
  • 可覆盖性: __init__ 可以被子类覆盖,而 __new__ 通常不建议覆盖。

用法示例

以下是一个展示 __new____init__ 用法的代码示例:

相关阅读:  python命令行什么意思

“`python
class Person:
def new(cls, name, age):
print(“Creating a new Person object”)
return super().new(cls)

def __init__(self, name, age):
    print("Initializing Person object")
    self.name = name
    self.age = age

person = Person(“John”, 30)
“`

当创建 Person 类的新实例时,首先调用 __new__ 方法。__new__ 方法打印一条消息并调用父类的 __new__ 方法,返回一个指向新创建对象的引用。然后,调用 __init__ 方法初始化对象的属性,打印一条消息并设置 nameage 属性。

问答

  1. __new____init__ 的主要区别是什么?
  2. __new__ 方法在实例化类时何时被调用?
  3. __init__ 方法的主要职责是什么?
  4. __new__ 方法可以返回什么?
  5. 为什么不建议覆盖 __new__ 方法?
相关阅读:  python和r语言的区别
在线字数统计,

原创文章,作者:高信纾,如若转载,请注明出处:https://www.wanglitou.cn/article_100508.html

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2024-07-05 09:39
下一篇 2024-07-05 09:42

相关推荐

公众号