本文将介绍Python构造函数和__init__的详细情况,特别是关于python构造函数和析构函数的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于
本文将介绍Python构造函数和__init__的详细情况,特别是关于python构造函数和析构函数的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于python __new__ 和 __init__、python __new__和__init__的区别、python 中 __init__和__new__的区别、Python 中__init__和__new__的区别是什么?的知识。
本文目录一览:- Python构造函数和__init__(python构造函数和析构函数)
- python __new__ 和 __init__
- python __new__和__init__的区别
- python 中 __init__和__new__的区别
- Python 中__init__和__new__的区别是什么?
Python构造函数和__init__(python构造函数和析构函数)
为什么构造函数确实称为“构造函数”?它们的目的是什么?它们与类中的方法有何不同?
另外,__init__
一个班级中可以有更多人吗?我尝试了以下方法,有人可以解释一下结果吗?
>>> class test: def __init__(self): print "init 1" def __init__(self): print "init 2">>> s=test()init 2
最后,是__init__
运算符重载器吗?
答案1
小编典典Python中没有函数重载,这意味着您不能拥有名称相同但参数不同的多个函数。
在您的代码示例中,您没有 过载 __init__()
。发生的是第二个定义将名称重新 绑定__init__
到新方法,导致第一个方法不可访问。
至于关于构造函数的一般问题,维基百科是一个很好的起点。对于特定于Python的内容,我强烈推荐Python文档。
python __new__ 和 __init__
概述
new 和 init 是类实例化的过程中被调用的方法, new 负责对象的创建,相当于构造器或者构造函数; init 负责对象初始化。 使用频率上, init 较多会被使用。
class A(object):
def __new__(cls):
return object.__new__(cls)
def __init__(self):
self.instance_method()
def instance_method(self):
print ''success!''
newA = A()
区别
参数
new 的第一个参数是 cls,表示类本身。
而 init 类似一般的实例方法, 第一个参数是 self,表示实例。我们可以看到 init 方法运行之前, 实例已经可以被使用了(self参数)。实例上的其他的方法也是可以使用的了。
调用时机
当我们创建类的对象时, new 先被调用,返回一个对象,对象引用作为参数传递给 init__, 然后对象属性被初始化。__init 方法不能返回任何数据。
__new__ --->(创建对象) --> __init__(self)
使用
只有很少的时候需要自己编写 new 方法,比如单例模式。大多数情况下,只需要关心实例的初始化,初始化过程中属性的分配,以及是否调用其他的实例方法。
以上代码和经验仅在 Python(2.7) 得到验证。
python __new__和__init__的区别
__new__和__init__的区别
# new 是用来控制对象的生成过程,在对象生成之前
# init 是用来完善对象的
# 如果new方法不返回对象,则不会调用init方法
class User:
def __new__(cls, *args, **kwargs):
print("in new")
return super().__new__(cls)
def __init__(self, name):
print("in init")
self.name = name
if __name__ == ''__main__'':
user = User(name="abc")
python 中 __init__和__new__的区别
用过 python 写过面向对象的代码的人对__init__方法应该很熟悉了,__init__ 方法通常用在初始化一个类实例的时候.
例如:
# -*- coding: utf-8 -*-
''''''
Created on Mar 31, 2016
@author: fky
''''''
class Test(object):
def __init__(self,name):
self.name = name
def __str__(self,):
return ''<Test: %s>'' % self.name
if __name__ == ''__main__'':
test = Test(''test1'')
print(test)
结果:
<Test: test1>
这就是__init__普通用法,其实当实例化一个类最先被调用的方法 __new__ 方法。
class Test(object):
def __new__(self,name):
print(''__new__'')
return super().__new__(self)
def __init__(self,name):
print(''__init__'')
self.name = name
def __str__(self,):
return ''<Test: %s>'' % self.name
if __name__ == ''__main__'':
test = Test(''test1'')
print(test)
结果:
__new__
__init__
<Test: test1>
从这个运行结果可以看到__new__方法的调用是发生在__init__之前的。
__new__ 的作用
依照 Python 官方文档的说法,__new__方法主要是当你继承一些不可变的 class 时 (比如 int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的 metaclass。
Python 中__init__和__new__的区别是什么?
__init__和__new__二者均是 Python 面向对象语言中的函数,其中__new__使用频率较少,__init__则使用的频率较多,那么 Python 中__init__和__new__的区别是什么?具体请看以下内容介绍。
在 Python 中,__init__和__new__是两个特殊的方法,用于对象的创建和初始化过程。它们的作用和执行时有所不同:
1、__new__
__new__是一个用于创建对象的特殊方法,是在对象实例化之前调用的。
__new__方法负责创建对象,并返回一个新的对象实例。
__new__方法是一个类方法,必须返回一个新的对象实例。
可以通过重写__new__方法来控制对象的创建过程,例如自定义对象的创建逻辑、返回其他类型的实例等。
2、__init__
__init__是一个用于对象初始化的特殊方法,是在对象实例化之后调用的。
__init__方法接收新创建的对象实例作为其第一个参数,并在该方法内部对对象的属性进行初始化。
__init__方法通常用于设置对象的初始状态,对属性进行赋值等操作。
__init__方法不需要返回任何内容,它的主要目的是对对象进行初始化。
总结:
__new__是在对象实例化之前调用,用于创建对象实例;
__init__是在对象实例化之后调用,用于初始化对象的属性。
在实际使用中,通常情况下我们只需要重写__init__方法来实现对象的初始化,而对__new__方法进行修改的需求相对较少。
我们今天的关于Python构造函数和__init__和python构造函数和析构函数的分享已经告一段落,感谢您的关注,如果您想了解更多关于python __new__ 和 __init__、python __new__和__init__的区别、python 中 __init__和__new__的区别、Python 中__init__和__new__的区别是什么?的相关信息,请在本站查询。
本文标签: