python类的构造函数是_Python中的类是否需要构造函数init?

我在这里看到了构造函数之间的一个误解——构造对象和初始化对象:Use __new__ when you need to control the creation of a new instance. Use __init__ when you need to control initialization of a new instance.

所以我们在这里一定要小心。I read that the constructor is like the first argument passed to the class, which makes sense to me since the parameters seem to be passed to the class via the __init__ method.

构造函数不会传递给类,准确地说,构造函数(__new__)的结果将是类或其子类中每个实例方法的第一个参数(注意:__new__仅适用于新样式的类):class A:

def __new__(self):

return 'xyz'

查看调用类(创建对象)时发生的情况:>>> A()

'xyz'

>>> type(A())

调用类不再返回类型为A的实例,因为我们更改了构造函数__new__的机制。实际上,这样做不仅改变了类的全部含义,而且很难破译。在创建特定对象的过程中,不太可能切换对象的类型。我希望这句话有意义,如果没有,它将如何在您的代码意义!class A:

def __new__(self):

return 'xyz'

def type_check(self):

print(type(self))

看看当我们试图调用type_check方法时会发生什么:>>> a = A()

>>> a

'xyz'

>>> a.type_check()

AttributeError: 'str' object has no attribute 'type_check'

a不是类A的对象,因此基本上您不再有权访问类A。

__init__用于初始化对象的状态。与其调用在创建后初始化对象成员的方法,__init__通过在创建期间初始化对象的成员来解决这个问题,所以如果在类中有一个名为name的成员,并且希望在创建类时初始化name,而不是调用额外的方法init_name('name'),您肯定会为此目的使用__init__。So when I 'call' the class, I pass it the parameters from the __init__ method?

调用类时,传递参数__init__方法?

无论您传递类的参数是什么,所有参数都将传递给__init__,并自动为您添加一个额外的参数,这是Python通常称为self(实例本身)的隐含对象,它将始终作为最左的参数自动传递:class A:

def __init__(self, a, b):

self.a = a

self.b = bA( 34, 35)

self.a = 34 | |

| |

| | self.b = 35

init(self, a, b)

|

|

|

The instance that you created by calling the class A()

注意:__init__对两者都有效。然而,__new__只适用于新样式的类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值