Python 套接字错误。属性错误:';非类型';对象没有属性';听一听';
我正在尝试编写一个简单的TCP套接字服务器 我得到了这个错误:Python 套接字错误。属性错误:';非类型';对象没有属性';听一听';,python,sockets,Python,Sockets,我正在尝试编写一个简单的TCP套接字服务器 我得到了这个错误: File "patch", line 9, in __init__ self.__SocketServer__.listen(1) AttributeError: 'NoneType' object has no attribute 'listen' 我不明白为什么 代码: socket.bind()返回None。不要将其重新分配给套接字属性: self.__SocketServer__ = socket.socket
File "patch", line 9, in __init__
self.__SocketServer__.listen(1)
AttributeError: 'NoneType' object has no attribute 'listen'
我不明白为什么
代码:
socket.bind()
返回None
。不要将其重新分配给套接字属性:
self.__SocketServer__ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.__SocketServer__.bind((self.__ip__, self.__port__))
self.__SocketServer__.listen(1)
另请注意:不要在自己的项目中使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu双下划线
名称。Python自己使用
如果要将名称标记为实例的内部名称,请在名称的开头使用单下划线。Python类没有隐私模型,所有属性都可以从外部访问
因此,这就足够了:
class DataManager:
def __init__(self):
self._port = 2121
self._ip = "127.0.0.1"
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._socket.bind((self._ip, self._port))
self._socket.listen(1)
self._log("Waiting car connection...")
self._connection, addr = self._socket.accept()
self._log("Car socket connected")
self._connection = None
我对套接字和连接使用了更常用的名称,同时也遵守了。我可以问一下为什么您对所有内容都使用
\uuuuu双下划线\uuu
名称吗?Python.@MartijnPieters,用于私有类成员。有问题吗?私有变量使用了\u单下划线
s。是的,不要将\u名称
名称用于您自己的属性。只需使用\u name
,在开头加一个下划线即可。Python没有隐私模型,只是一个使用名称的惯例。哦,抱歉,伙计们,我是Python的新手,我的主要语言是C++和java:D。
class DataManager:
def __init__(self):
self._port = 2121
self._ip = "127.0.0.1"
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._socket.bind((self._ip, self._port))
self._socket.listen(1)
self._log("Waiting car connection...")
self._connection, addr = self._socket.accept()
self._log("Car socket connected")
self._connection = None