我目前正在研究一些经典的面向对象,并且已经读过一些书(现在不记得哪一本)
“构造函数的作用是确保(在构造函数中)以有效状态返回新的类实例”
由于python使用duck typing,我想知道,例如,我如何在没有显式类型检查的情况下阻止我的对象接收错误或无效的参数,如果这会留下在程序中进一步获取无效实例的风险,可能导致错误的时间晚于预期。
答案 0 :(得分:1)
我认为关于将对象返回有效状态的说法大致正确。
基本上,构造函数应该根据传入的参数以您希望的方式设置类的成员,类似于其他语言。
可能通过isinstance
在Python中进行类型检查,尽管通常不需要也不需要它。
实际上,对于duck typing
,一般过程是编写代码,包括构造函数,就像对象is a duck
一样。也就是说,这就是您期望的方法和行为。如果传入的对象没有特定的方法,那么会引发运行时异常。
另外,请记住与__enter
范例一起使用的__exit__
和with
函数。这可以帮助清理资源,并且是对必要的try/except/finally
块的响应。