在Python类中订购方法的好方法是什么?

zet*_*ish 59 python

我想在Python类中订购方法,但我不知道正确的顺序是什么.

当我使用PyDev在Eclipse中提取方法时,Eclipse将提取的方法放在修改后的方法之上.但是这会将较低级别的细节放在更高级别的细节之前.据鲍勃叔叔说,我应该这样做,以便我的代码读起来像报纸的头条新闻.当我编程Java时,我只是按照他的建议.

Python的最佳实践是什么?

dan*_*jar 40

正如其他人所指出的,没有正确的方法来订购你的方法.也许PEP建议会有用,但无论如何.让我尽量客观地处理你的问题.

  • 接口首先:公共方法和Python魔术函数定义类的接口.大多数情况下,您和其他开发人员希望使用类而不是更改它.因此,他们会对该类的界面感兴趣.将它放在源代码中的第一位可以避免滚动浏览您不关心的实现细节.

  • 属性,魔术方法,公共方法:很难定义这三者之间的最佳顺序,这三者都是类接口的一部分.正如@EthanFurman所说,坚持整个项目的一个系统是最重要的.一般来说,人们期望__init__()在课堂上获得最好的第一个功能,所以我会跟进下面的其他魔术方法.

  • 阅读顺序:基本上,有两种方式来讲述一个故事:自下而上或自上而下.通过首先放置高级函数,开发人员可以通过阅读前几行来粗略地理解类.否则,人们必须阅读整个课程才能理解课程,大多数开发人员没有时间.根据经验,将方法置于从其身体调用的所有方法之上.

  • 类方法和静态方法:通常,这是上面解释的阅读顺序所暗示的.普通方法可以调用所有方法次数,因此可以先行.类方法只能调用类方法和静态方法,接下来.静态方法不能调用类的其他方法并且最后.

希望这可以帮助.这些规则中的大多数都不是特定于Python的.我不知道一种语言强制执行方法顺序,但如果是这样,那将非常有趣,请注释.

  • 通常语言不强制排序。但有些语言有共同的约定。例如 [C# StyleCop](https://github.com/StyleCop/StyleCop) 有严格的排序规则。对于 Java,请参阅 http://stackoverflow.com/questions/4668218 等。 (2认同)
  • 类方法:这些通常用作构造函数,然后它们通常显式调用“__init__”(与“__new__”组合)或隐式调用“__init__”(通过默认构造函数),因此这就是将它们与“__init__”放在一起的原因。(尽管我从未见过它们放置在`__init__`之前。) (2认同)

Eth*_*man 13

没有一个正确的订单.选择一个系统并坚持下去.我使用的是:

class SomeClass(object):
    def __magic_methods__(self):
        "magic methods first, usually in alphabetical order"
    def _private_method(self):
        "worker methods next, also in alpha order"
    def a_method(self):
        "then normal methods, also in alpha order"
Run Code Online (Sandbox Code Playgroud)

  • 你对staticmethods,类变量和@property装饰方法的偏好是什么? (2认同)