2013-02-04 33 views
2

對於作業我重新實現了python中的套接字類。然而,我並不熟悉python。我有一個關於語法的問題。python類常量

從Python API,當你定義你使用一個插座:

import socket 
mySocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) 

不過,我不知道如何界定其行爲的生命AF_INET和SOCK_DGRAM常數。

import mySocket 
mySocket = mySocket.socket(mySocket.AF_INET,mySocket.SOCK_DGRAM)) 

提供了以下錯誤

Undefined variable from import: AF_INET 
Undefined variable from import: SOCK_DGRAM 

的mySocket類目前的樣子:

class socket: 
    AF_INET; 
    SOCK_DGRAM; 

    def socket(..... 
+5

Python不在該行的末尾需要分號。看到他們讓我難過。 :-( –

+0

我知道,這只是我想要的習慣.. – gfreestone

+1

'socket.AF_INET'是一個模塊常量;'socket.socket.AF_INET'是一個類常量,當類有相同的名字時會有點混亂作爲包含它的模塊 – chepner

回答

4

你必須在模塊級定義的常量,而不是在你的socket類:

AF_INET = 2 
SOCK_DGRAM = 2 

class socket: 
    def __init__(..... 
+0

在一個類中嵌套一些常量是完全合理的,命名空間,這樣就可以在同一模塊中有兩個不相關的類,它們具有相同名稱的常量,例如'SIZE'。 – martineau

+0

@marti neau:當然是;但'socket'模塊使用模塊級別的常量,並且如果要模擬該模塊,那麼這就是您使用的模塊。 :-) –

3

個這些常數是模塊級:

module1.py

CONSTANT1 = 'test' 

class YourClass(object): 
    class_variable = 12 

module2.py

import module1 

print module1.CONSTANT1