首页 > 解决方案 > unpickling 类实例时不断收到“Property object at 0x”

问题描述

我正在尝试设置多线程服务器和客户端,并且当前正在发送包装在 TCP 模块类中的信息。我正在使用 pickle 发送数据,并且遇到了一个问题,即在 unpickling 数据后尝试访问实例变量会导致“0x 处的属性对象”,而不是实例变量。这是相关的服务器代码:

data = self.clientSocket.recv(2048)
        print(data)
        message = pickle.loads(data)

        header = message.header
        self.currUser = message.user
        if header == 'user-login':
            print("[recv] New login request")
            self.userLogin()

客户端代码:

username = input("Username: ")
    password = input("Password: ")
    message = TCPmodule().withSocket("user-login", password, self.clientSocket)
    message.user = username
    print(message.header)
    data = pickle.dumps(message)
    self.clientSocket.send(data)

类(使用的类方法和 getter/setter):

def withSocket(self, header, content, socket):
    self.header = header
    self.content = content
    self.socket = socket
    self.user = ""
    self.port = 0
    return self
@property
def header(self):
    return self._header
@header.setter
def header(self,value):
    self._header = value

@property
def content(self):
    return self._content
@content.setter
def content(self,content):
    self._content = content

@property
def user(self):
    return self._user
@user.setter
def user(self,user):
    self._user = user

我打印(message.header)服务器端时的属性对象消息

对python有点陌生,所以我不确定我是否在这里遗漏了一些东西。谢谢

标签: pythonsocketsooppickle

解决方案


推荐阅读