Joe*_*Joe 8 c# python java reflection
我写了C#,而来自高处的口头禅似乎"永远不会在生产代码中使用反射".我已将它用于测试代码,但从未在野外运行过.所有的论点看起来都是合理的,而且总有一种方法可以通过添加另一层抽象或设计模式或其他来实现.
现在我开始编写一些严肃的Python代码,我想知道是否适用相同的原则.似乎python的设计考虑了反思.模块和类将成员存储在易于访问的字典中.Django的模型的Meta类,例如将字符串作为引用成员.
我可以在Python中编写C#/ Java,但我真的不想这样做.我仍然坚信所说的语言"没有反思".Python的方式是根本不同的吗?
Dar*_*rov 16
作为一种动态语言,Python与静态类型语言根本不同,所以一切都在其中反映:-) 在生产代码(对于静态语言)中从不使用反射对我来说似乎有点极端.
我认为c#中的"生产代码中没有反映"是不正确的.
反射通常允许程序员做其他事情不可能完成的事情.
我会说"在生产代码中没有反映非公开成员"和"谨慎使用反思!" 如果使用不当,可能会失去性能.正确使用可以让你获得性能(只考虑静态反射)不要使用反射来大规模调用代码.
而Python则是一种动态语言.所有概念都不同.正常性(以及正确的方法)是使用您正在谈论的技术.