Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python类常量_Python_Sockets_Python 2.7 - Fatal编程技术网

python类常量

python类常量,python,sockets,python-2.7,Python,Sockets,Python 2.7,作为家庭作业,我正在用python重新实现socket类。然而,我并不精通python。我有一个关于语法的问题 定义使用的套接字时,从python API: import socket mySocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)) 然而,我不知道如何定义那些表现生命活动的常量 import mySocket mySocket = mySocket.socket(mySocket.AF_INET,mySocket.SOCK

作为家庭作业,我正在用python重新实现socket类。然而,我并不精通python。我有一个关于语法的问题

定义使用的套接字时,从python API:

import socket
mySocket = socket.socket(socket.AF_INET,socket.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(.....

您需要在模块级别定义常量,而不是在
socket
类中:

AF_INET = 2
SOCK_DGRAM = 2

class socket:
    def __init__(.....

这些常数是模块级的:

模块1.py

CONSTANT1 = 'test'

class YourClass(object):
    class_variable = 12
import module1

print module1.CONSTANT1
模块2.py

CONSTANT1 = 'test'

class YourClass(object):
    class_variable = 12
import module1

print module1.CONSTANT1

Python在行尾不需要分号。看到他们让我很难过-(我知道,我想这只是一种习惯.
socket.AF_INET
是一个模块常量;
socket.socket.AF_INET
将是一个类常量。当类与包含它的模块具有相同名称时,会有点混淆。模块级常量通常定义在脚本的顶层,而不是任何具有语句的形式为
NAME=VALUE
。类级常量通常在
块内定义,但在任何方法之外。您可以从套接字导入套接字中添加一个
,作为套接字
,以更好地区分套接字模块和套接字类级内容。在中嵌套一些常量是完全合理的一个类作为它们的名称空间。例如,这使得在同一个模块中有两个不相关的类,它们有一个具有相同名称的常量成为可能。例如
SIZE
@martineau:当然是这样;但是
socket
模块使用模块级常量,如果您要模拟该模块,那么这就是什么你不能用.:-)