Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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_Type Safety - Fatal编程技术网

Python 如何在没有类型安全的情况下编程

Python 如何在没有类型安全的情况下编程,python,type-safety,Python,Type Safety,Java是一种硬类型语言,在与Python交换时,我觉得在没有类型安全性的情况下有点难以相处。 那么,有谁能帮助我在没有类型安全的情况下编程的良好实践和概念呢 是否需要在每个getter和setter上验证该值是否为所需类型的实例 如果没有类型安全,我将如何使用POO 如何在没有类型安全性的情况下封装对象? 你通常不应该进行打字检查。让类型自由。忘记类型安全。python中的所有代码都是一种泛型编程。 面向对象编程没有与类型安全性相结合。 Python不支持实例变量或私有函数的封装。但明智的py

Java是一种硬类型语言,在与Python交换时,我觉得在没有类型安全性的情况下有点难以相处。 那么,有谁能帮助我在没有类型安全的情况下编程的良好实践和概念呢

是否需要在每个getter和setter上验证该值是否为所需类型的实例

如果没有类型安全,我将如何使用POO

如何在没有类型安全性的情况下封装对象? 你通常不应该进行打字检查。让类型自由。忘记类型安全。python中的所有代码都是一种泛型编程。 面向对象编程没有与类型安全性相结合。 Python不支持实例变量或私有函数的封装。但明智的pythonista使用uu前缀作为私有变量或函数。 相反,单元测试将帮助您。 在我的最爱中,鼻子测试和看门狗是很好的工具。 NoTest运行项目中的所有*\u test.py文件。 watchdog中的watchmedo将监视文件更改并执行特定命令

通常我使用这两种工具,比如

$ watchmedo shell-command --patterns="*.py" --recursive --wait --command="nosetest -sv"
此一行程序会在*.py文件中的每次更新中自动运行单元测试。
您所有的代码修改都将受到监控。

只要……放手。。。自由…通常不会。在python中,它的一种理解是你不会把方形的钉子塞进圆形的孔中。如果你想用大量的isinstance调用来混乱你的代码,那就去吧,但这样做是非常不符合python的。Python是,这是故意的!仅仅在python中,类型是由它的接口定义的,而不是它是什么。您可以使用完全不同的实现和相同的方法,它应该可以工作。@FabioBohnenberger:您不能。只要您清楚地记录了您期望的接口,调用方就有责任传递一些合理的信息,如果他没有,那么他会得到一个很好的回溯。