我正在用 python 编写我自己版本的套接字类。我想知道是否有一种方法不使用它的方法初始化子类__init__,而是使用套接字类的现有实例初始化它。
基本上,我想做的是从套接字类继承,并覆盖该accept()方法以返回我自己的类而不是套接字类的对象。
为了解决这个问题,我想实现在__init__自定义套接字类的方法中设置基本套接字的可能性,该方法将套接字的实例作为参数,并使用现有的套接字实例创建自定义套接字类的新实例。套接字类,或使用类方法执行相同操作fromSocket()。
我现在的问题是如何将套接字类的现有实例设置为我自己的套接字的超类,而不使用属性来包含套接字对象?(这在Python中可能吗?)
我发现的所有其他相关问题更多地是关于如何在运行时更改超类。我可能在某个地方忽略了答案,但我找不到它。
我的代码看起来像这样:
import socket
class MySocket(socket.socket):
def __init__(self, sock:socket.socket=None):
if sock != None:
# initialize using existing instance contained in sock
# How? (My question)
else:
super().__init__() # Default conf is enough for now
def accept(self):
s, addr = super().accept()
return MySocket(sock=s) # <= This is what I want to do
Run Code Online (Sandbox Code Playgroud)
我想这样称呼它:
s = MySocket()
# …Run Code Online (Sandbox Code Playgroud)