Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中类构造函数的职责是什么?_Python_Constructor_Typechecking_Ooad_Duck Typing - Fatal编程技术网

python中类构造函数的职责是什么?

python中类构造函数的职责是什么?,python,constructor,typechecking,ooad,duck-typing,Python,Constructor,Typechecking,Ooad,Duck Typing,我目前正在学习一些经典的面向对象技术,并且读过一些书(现在不记得是哪一本) “构造函数的作用是确保(由构造函数)以有效状态返回新类实例” 由于python使用duck类型,我想知道,例如,如何防止我的对象在没有显式类型检查的情况下接收错误或无效的参数,以及这样做是否会在程序内部留下进一步获取无效实例的风险,可能会导致比预期更晚的错误。我认为,关于以有效状态返回对象的说法大体上是正确的 基本上,构造函数应该根据传入的参数按照您希望的方式设置类的成员,类似于其他语言 通过isinstance在Pyt

我目前正在学习一些经典的面向对象技术,并且读过一些书(现在不记得是哪一本)

“构造函数的作用是确保(由构造函数)以有效状态返回新类实例”


由于python使用duck类型,我想知道,例如,如何防止我的对象在没有显式类型检查的情况下接收错误或无效的参数,以及这样做是否会在程序内部留下进一步获取无效实例的风险,可能会导致比预期更晚的错误。

我认为,关于以有效状态返回对象的说法大体上是正确的

基本上,构造函数应该根据传入的参数按照您希望的方式设置类的成员,类似于其他语言

通过
isinstance
在Python中执行类型检查是可能的,尽管通常情况下确实不需要也不希望这样做

实际上,对于
duck类型
,一般的过程是编写代码,包括构造函数,就好像对象
是一个duck
。也就是说,它具有您所期望的方法和行为。如果传入一个没有特定方法的对象,例如,将引发运行时异常


另外,请记住
\uuu输入
\uu退出
函数,它们与
with
范例一起使用。这有助于清理资源,并且是对其他必要的
try/except/finally
块的响应。

我认为这将被关闭,但是我的2c是,它将导致正确的初始状态。。。,然而,在python中,将其分配给某些类变量并在它们实际尝试使用类变量时引发错误是完全可以接受的…@JoranBeasley你说“完全可以接受”,但我想理解:基于什么可以接受?感谢基于大型公共图书馆的使用年限。。。实际上,您已经找到了为什么这可能会被关闭的关键,它基本上归结为一个基于意见的问题生成一个有效的对象几乎肯定意味着调用父类的构造函数,但是Python没有强制执行这一点。