怎么维护python带有依赖性的代码啊

u012957077 2016-11-13 08:13:51
假如说一个类A的某方法,对类B的对象有参数依赖。
就像ClassA.method(_classB_obj)这种形式。
当类B修改了后,这个method的处理逻辑很可能也要跟着改。

但是python属于动态语言,它体现不出来这种关系。
当代码越写越长,有一天发现曾经的定义要改,却又根本不知道这个对象在哪里被引用的时候,就有点怂了。
python还不像c++跟java一样编译时候就能给你报错,按错误列表跟下去一轮就直接改完了。
它只能等运行,给你抛出错误的时候,你才能发现问题所在。
不给你抛错误,就什么都发现不了。

感觉程序太不可靠了,而且被动地有点操蛋。
话说python既然不能声明类型,这种问题应该很常见才对。
但很少听人提起。
有没有办法,能把这些依赖关系给直接体现出来的?
不管是从命名上,还是工具上,或者文档上都可以
...全文
279 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
u012957077 2016-11-15
  • 打赏
  • 举报
回复
发了几个贴,现在基本知道了,谢谢
u012957077 2016-11-15
  • 打赏
  • 举报
回复
引用 1 楼 sinat_30665603 的回复:
你说的文体确实是脚本语言常见的一些问题,这在另一个脚本语言javascript上的表现更甚, 因为javascript作为一个脚本语言也不具备如类型检查、类成员相关检查的特性,导致 不少作前端脚本开发的人士很头疼。 但你也要注意到Python也有提供了很多其它编译语言不具备的函数及方法,如dir函数能显示 出一个对象的全部成员及方法,这就是Python对于有关类型检查及类成员相关检查的·一个 观点,即使用运行时类型检查及类成员相关检查。 我是数据挖掘与机器·学习相关方向的,给你看一个链接 https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/base.py 这是Python开源机器学习库scikit-learn关于线性模型的基本部分源代码, 这部分源代码使用了3次isinstance函数进行类型检查,使用hasattr进行类成员相关检查, 当然这里后者更符合你想要的检查并抛出异常的要求,但前者也能说明一些问题, 既然使用了Python万物皆对象的优势,自然也要承担劣势。 补救方法就是使用现在成熟的库都在使用的运行时类型检查及类成员相关检查。
这项目下下来一时半会看不懂,不过我觉得这代码写得不错,而且这方法也不错。
nieoding 2016-11-14
  • 打赏
  • 举报
回复
习惯就好,不习惯就去玩Java吧 写一个功能,Python10个人写出来是10个风格,Java100个人写出来是1个风格。
斯温jack 2016-11-14
  • 打赏
  • 举报
回复
你说的文体确实是脚本语言常见的一些问题,这在另一个脚本语言javascript上的表现更甚, 因为javascript作为一个脚本语言也不具备如类型检查、类成员相关检查的特性,导致 不少作前端脚本开发的人士很头疼。 但你也要注意到Python也有提供了很多其它编译语言不具备的函数及方法,如dir函数能显示 出一个对象的全部成员及方法,这就是Python对于有关类型检查及类成员相关检查的·一个 观点,即使用运行时类型检查及类成员相关检查。 我是数据挖掘与机器·学习相关方向的,给你看一个链接 https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/base.py 这是Python开源机器学习库scikit-learn关于线性模型的基本部分源代码, 这部分源代码使用了3次isinstance函数进行类型检查,使用hasattr进行类成员相关检查, 当然这里后者更符合你想要的检查并抛出异常的要求,但前者也能说明一些问题, 既然使用了Python万物皆对象的优势,自然也要承担劣势。 补救方法就是使用现在成熟的库都在使用的运行时类型检查及类成员相关检查。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧