2014-03-02 160 views
1

在Python代碼中,命名類,方法和變量時,處理衆所周知的縮寫詞的規範方式是什麼?Python:使用首字母縮寫命名

例如,考慮一個處理RSS提要的類。請問,與其是這樣的:

class RSSClassOne: 
    def RSSMethod(self): 
     self.RSS_variable = True 

class ClassRSSTwo: 
    def MethodRSS(self): 
     self.variable_RSS = True 

或本:

class RssClassOne: 
    def rssMethod(self): 
     self.rss_variable = True 

class ClassRssTwo: 
    def MethodRss(self): 
     self.variable_rss = True 

即更重要的是,保留首字母大寫還是PEP 008的建議?

編輯:從答案,我的結論是,這將是一段路要走:

class RSSClassOne: 
    def rss_method(self): 
     self.rss_variable = True 

class ClassRSSTwo: 
    def method_rss(self): 
     self.variable_rss = True 
+0

如果你想在開源項目工作,你一定要與PEP8工作。除此之外,使用snake_case保留類Capilatized和方法名... – Oz123

+0

當您將諸如pylint之類的工具應用於開發過程時,命名約定變得並不重要。 – Carl

回答

7

嗯,事實證明,PEP 8已經有這個話題涵蓋here

注:當使用CapWords縮寫,大寫所有字母的縮寫 。因此HTTPServerError優於 HttpServerError

換句話說,Python的慣例用於容納縮寫名稱是:

  1. 請類名(通常,Python中的唯一部分使用CapWords)大寫首字母縮寫詞。

  2. 在其他地方,爲了符合其他naming conventions而使其成爲小寫字母。

下面是與ipaddress module演示:

>>> import ipaddress # IP is lowercase because this is a module 
>>> ipaddress.IPv4Address # IP is uppercase because this is a class 
<class 'ipaddress.IPv4Address'> 
>>> ipaddress.ip_network # IP is lowercase because this is a function 
<function ip_network at 0x0242C468> 
>>> 
+0

很好的例子。那麼方法名稱呢?PEP8表示它應該是words_with_underscores。我通常會寫my_rss_method() – rafgoncalves

+0

我會建議添加這個觀察到答案。這個問題提供的兩個例子都有錯誤的方法名稱。 – rafgoncalves

+0

其實,我剛剛發現了一個PEP 8節選,可以解釋在這種情況下要做什麼。所以,我會用它來代替。 – iCodez

0

我要說的是,繼PEP 8的建議是做相關的編碼風格的第一件事情。

1

我不認爲第一個問題有任何問題。作爲首字母縮寫詞代表一系列單詞,並且在每個單詞的開始處您使用CamelCase的Python class,因此在首字母縮寫詞中大寫每個字母(單詞)是完全可以的。

第一個代碼示例,因此比第二個更符合Python代碼的風格指南。總之,第一個因爲PEP8構象非常重要。 :)

請記住,有有時(儘管很少)的實例,其中這些規則可以稍微彎曲。這可以被認爲是其中之一。