python如何调用类方法_Python:如何从类外部调用方法?

我有一个简单明了的问题:

如何从另一个python文件/类调用send()方法?

我想从另一个组件向客户机发送消息(连接已建立)。在

我想我必须获得singleton实例的引用,然后像这样“发送”:server = Server(ip,port)

server.send("hello")

如果我这样做,我会得到一个错误:

^{pr2}$

也许“自我”就是问题所在。。。在

以下是服务器类:class Server(threading.Thread):

##############################################################################

# Server: Singleton Instance

##############################################################################

_instance = None

def __new__(cls, *args, **kwargs):

if not cls._instance:

cls._instance = super(Server, cls).__new__(cls, *args, **kwargs)

return cls._instance

##############################################################################

# Constructor of Server

##############################################################################

def __init__(self, host, port):

threading.Thread.__init__(self)

print "[SERVER____] Creating Server Thread"

self.host = host

self.port = port

self.__reset__()

##############################################################################

# Resetting local attributes

##############################################################################

def __reset__(self):

print "[SERVER____] Reset"

self.serverSock = None

self.clientSock = None

self.clientAddr = None

self.clientData = None

self.isRunning = None

self.isWaiting = None

###########################################################################

def send(self, message):

print "[SERVER____] Sending Message", message

self.clientSock.send(message)

##############################################################################

# Stop the Server: Close the Socket and Reset

##############################################################################

def stop(self):

# Close The Client Socket

if(self.clientSock):

self.clientSock.close()

print "[SERVER____] Aborting Client Socket"

# Close The Server Socket

if(self.serverSock):

self.serverSock.close()

print "[SERVER____] Aborting Server Socket"

# Reset the Member Fields

self.__reset__()

print "[SERVER____] Aborting Server Thread"

self._Thread__stop()

##############################################################################

# Server.start()

##############################################################################

def run(self):

try:

# Create The Socket

self.serverSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print "[SERVER____] Creating Server Socket"

# Set Socket Options

#self.serverSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1);

# Bind The New Socket

self.serverSock.bind((self.host, self.port))

print "[SERVER____] Binding Server Socket"

print "[SERVER____] IP: ", self.host, " Port: ", self.port

# Set The Awaiting Flag

self.isWaiting = True;

# Start The Server Loop

while self.isWaiting:

# Listen On New Socket

self.serverSock.listen(1)

print "[SERVER____] Listening Server Socket"

# Accept New Connection

self.clientSock, self.clientAddr = self.serverSock.accept()

print "[SERVER____] Accepting New Connection: " , self.clientAddr

# Set The Running Flag

self.isRunning = True;

# Serve The Connection

while self.isRunning:

print "[SERVER____] Want to recv message...."

try:

# Receive A New Data Block

self.clientData = self.clientSock.recv(config.BUFFERSIZE)

# Process The New Data Block

if not self.clientData:

print "[SERVER____] Reset By Client Connection"

break

else:

print "[SERVER____] Receiving Message: ", self.clientData

parser = MessageParser()

parser.parseSMMessage(self.clientData)

except socket.error:

print "[SERVER_ERR] Error at receiving data from client."

except Exception as exc:

print "[SERVER____] Server Thread Exception ", exc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值