2024-04-19 15:23:29 发布
网友
为什么构造器真的叫做“构造器”?它们的目的是什么?它们与类中的方法有何不同?
同样,一个类中是否可以有更多的__init__?我试了如下的方法,有人能解释一下结果吗?
__init__
>>> class test: def __init__(self): print "init 1" def __init__(self): print "init 2" >>> s=test() init 2
最后,__init__是运算符重载吗?
Python中没有函数重载,这意味着不能有多个名称相同但参数不同的函数。
在您的代码示例中,您不会重载__init__()。结果是,第二个定义将名称__init__重新绑定到新方法,导致第一个方法不可访问。
__init__()
至于关于构造函数的一般问题,Wikipedia是一个很好的起点。对于特定于Python的内容,我强烈建议使用Python docs。
为什么构造函数确实被称为“构造函数”?
构造函数(名为__new__)创建并返回类的新实例。因此,C.__new__类方法是类C的构造函数
__new__
C.__new__
在特定实例上调用C.__init__实例方法,在创建后初始化它,然后再传递回调用方。所以这个方法就是C的新实例的初始化器
C.__init__
它们与类中的方法有何不同?
如official documentation__init__中所述,在创建实例后调用。其他方法不接受这种治疗。
他们的目的是什么?
构造函数C.__new__的目的是在构造新的C实例时定义自定义行为。
C
初始化程序C.__init__的目的是定义C的每个实例在创建后的自定义初始化。
例如,Python允许您执行以下操作:
class Test(object): pass t = Test() t.x = 10 # here you're building your object t print t.x
但是如果你想让Test的每个实例都有一个属性x等于10,你可以把代码放在__init__中:
Test
x
class Test(object): def __init__(self): self.x = 10 t = Test() print t.x
每个实例方法(在类的特定实例上调用的方法)都将实例作为其第一个参数接收。这个参数通常命名为self。
self
类方法,例如构造函数__new__,而是接收类作为它们的第一个参数。
现在,如果您需要x属性的自定义值,您只需将该值作为参数传递给__init__:
class Test(object): def __init__(self, x): self.x = x t = Test(10) print t.x z = Test(20) print t.x
我希望这能帮助你消除一些疑虑,既然你已经得到了其他问题的好答案,我就到此为止:)
类只是用来创建对象的蓝图。构造函数是每次创建对象时运行的一些代码。因此,有两个构造函数是没有意义的。结果是第二个写第一个。
通常使用它们的目的是为该对象创建变量,如下所示:
>>> class testing: ... def __init__(self, init_value): ... self.some_value = init_value
因此,您可以这样做,从这个类创建一个对象:
>>> testobject = testing(5)
然后,testobject将有一个名为some_value的对象,在这个示例中将是5。
some_value
>>> testobject.some_value 5
但您不需要像我在示例中那样为每个对象设置值。您也可以这样做:
>>> class testing: ... def __init__(self): ... self.some_value = 5
然后某个值的值将是5,并且在创建对象时不必设置它。
>>> testobject = testing() >>> testobject.some_value 5
以及。。。我的样本不是你写的。这就是它在pyshell中的样子。。。
Python中没有函数重载,这意味着不能有多个名称相同但参数不同的函数。
在您的代码示例中,您不会重载
__init__()
。结果是,第二个定义将名称__init__
重新绑定到新方法,导致第一个方法不可访问。至于关于构造函数的一般问题,Wikipedia是一个很好的起点。对于特定于Python的内容,我强烈建议使用Python docs。
为什么构造函数确实被称为“构造函数”?
构造函数(名为
__new__
)创建并返回类的新实例。因此,C.__new__
类方法是类C的构造函数在特定实例上调用
C.__init__
实例方法,在创建后初始化它,然后再传递回调用方。所以这个方法就是C的新实例的初始化器它们与类中的方法有何不同?
如official documentation
__init__
中所述,在创建实例后调用。其他方法不接受这种治疗。他们的目的是什么?
构造函数
C.__new__
的目的是在构造新的C
实例时定义自定义行为。初始化程序
C.__init__
的目的是定义C
的每个实例在创建后的自定义初始化。例如,Python允许您执行以下操作:
但是如果你想让
Test
的每个实例都有一个属性x
等于10,你可以把代码放在__init__
中:每个实例方法(在类的特定实例上调用的方法)都将实例作为其第一个参数接收。这个参数通常命名为
self
。类方法,例如构造函数
__new__
,而是接收类作为它们的第一个参数。现在,如果您需要
x
属性的自定义值,您只需将该值作为参数传递给__init__
:我希望这能帮助你消除一些疑虑,既然你已经得到了其他问题的好答案,我就到此为止:)
类只是用来创建对象的蓝图。构造函数是每次创建对象时运行的一些代码。因此,有两个构造函数是没有意义的。结果是第二个写第一个。
通常使用它们的目的是为该对象创建变量,如下所示:
因此,您可以这样做,从这个类创建一个对象:
然后,testobject将有一个名为
some_value
的对象,在这个示例中将是5。但您不需要像我在示例中那样为每个对象设置值。您也可以这样做:
然后某个值的值将是5,并且在创建对象时不必设置它。
以及。。。我的样本不是你写的。这就是它在pyshell中的样子。。。
相关问题 更多 >
编程相关推荐