2011-01-28 36 views
0

在Python中有方法来声明def的没有放在课堂上。所以,如果我只需要很多def的存储分隔的类,我应该简单的做到这一点:排列定义

def first_method(): 
    pass 

def second_method(): 
    pass 

,并且不使用@classmethod@staticmethod

class methods(): 

    @classmethod 
    def first_method(cls): 
     pass 

    @staticmethod 
    def second_method(): 
     pass 

如果第一种方法是正确的,我应该如何标记私人和公共方法?

回答

3

是的。只要将不是实例方法的函数放在类中。

你在想Java,你会想。 Python不是Java。 Python没有真正的方法来使用公共和私有方法 - 您可以更改名称以表明您想要某种形式的隐私(名称的开头为___),但它不可执行。

我发现在我用Python编程的所有时间中,我从不希望访问修饰符。

+0

良好的答案,只有一个抱怨:​​领先的`__`(name mangling)最多是无用的,最坏的是有害的(不明显的NameErrors)。 – delnan 2011-01-28 17:45:32

3

Python中没有私有和公有方法。按照惯例,以单个下划线开头的名称被认为是“私人”的,因为用户不应该依赖它们的存在。此外,您可以文档公共界面。所有其他应该没有关系。

我会说,轻度相关函数的集合将是一个更pythonic的解决方案。