python实例属性没有init_python – 在不定义__init__函数的情况下创建类的实例

每个类都有__init__方法.如果它没有明确定义一个,那么它将从其父类继承一个.在第二个示例中,该类从基础对象类继承__init__和一堆其他方法(以及其他非方法属性).我们可以通过dir函数看到:

class Dog:

def init_instance(self,name):

self.name = name

print('My name is',name)

print(dir(Dog))

产量

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'init_instance']

在构造实例之后(通过__new__方法)自动调用__init__,因此如果我们需要初始化实例,我们也可以使用它.但是我们可以显式调用你的init_instance:

bob = Dog()

bob.init_instance('Bob')

print(bob.name)

产量

My name is Bob

Bob

如果你为类提供一个名为__init__的初始化程序,那么它将不会被自动调用. Python应该如何知道该方法是初始化器?尽管习惯上将__init__作为类定义中的第一个方法,但这绝不是强制性的,有些人喜欢将__init__放在最后.

你说:“我看过没有使用过init方法的代码,为什么会这样?”好吧,有些类根本不需要初始化它们的实例:它们的实例属性是通过各种其他方法设置的,或者通过在类定义之外的代码中直接赋值,例如bob.color =’brown’.或者他们从父类继承了一个完全可用的__init__.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值