内部类是unpythonic吗?

int*_*tar 4 python

我的同事刚刚指出,我对内部阶级的使用似乎是"单一的".我猜它违反了"扁平比嵌套更好"的启发式.

这里的人们怎么想?内部类是否比Python更适合Java等?

注意:我不认为这是一个"主观"的问题.当然,风格和美学在编程社区中客观的.


相关问题: 在Python中定义另一个类中的类是否有好处?

dwc*_*dwc 10

这可能不值得StackOverflow上的[主观]标签,但它在较大的舞台上是主观的:一些语言社区鼓励嵌套,而另一些语言社区则不鼓励它.那么为什么Python社区不鼓励嵌套呢?因为Tim Peters把它放在了Python的禅宗中?它是否适用于所有场景,无一例外?应该将规则作为指导,这意味着在应用它们时不应该关闭你的大脑.你必须明白规则的含义以及为什么有人打扰制定规则的重要性.

我知道保持平稳的最大原因是因为另一种理念:做一件事,做得好.生活在其他课程中的许多小特殊目标课程表明你没有足够的抽象.也就是说,你应该删除内部类的需要和愿望,不仅仅是为了遵守规则而将它们移到外面.

但有时你确实有一些行为应该被抽象成一个类,而这是一个特殊情况,只能在另一个单独的类中获得.在这种情况下,你应该使用一个内部类,因为它是有道理的,它告诉其他人阅读代码,那里有一些特殊的东西.

  • 不要盲目遵守规则.
  • 不要理解为规则的原因,并尊重这一点.

  • +1.我想补充一件事; 内部类可以,也许应该利用语言的动态性.介于经典OOP和元编程之间. (2认同)

Ale*_*lli 9

"扁平比嵌套更好"的重点是避免过度嵌套 - 即严重的深层次.嵌套的一个层次本身并不重要:只要你的嵌套仍然尊重(一种微弱的形式)的得墨忒耳法则,这通常证明你没有发现自己写的东西onething.another.andyet.anotherone(太多了)表达式中的点是一种"代码气味",暗示你在嵌套方面做得太深,需要重构以使事情变得扁平化,我不会太担心.