我有这段代码,我尝试使用自己的函数覆盖BitstampWSS
的几个方法:
from bitex.api.WSS import BitstampWSS
import time
class Bitstamp(BitstampWSS):
def __init__(self):
wss = BitstampWSS()
wss.channels=['order_book_xrpusd']
wss.start()
time.sleep(5999)
def order_book_callback(self, pair, data):
print (pair)
def xrpusd_ob_callback(self, data):
print (data)
我没有尝试从BitstampWSS覆盖order_book_callback
方法,但我的函数从未被调用,但是来自BitstampWSS
的原始函数。
我做错了什么?
干杯
答案 0 :(得分:2)
首先,您要创建的是您尝试子类化的类的实例。这是合法的,但通常没有多大意义。
接下来的事情是__init__()
方法在返回之前会休眠近100分钟。因此,虽然新实例尚未初始化(因为__init__()
尚未返回),但已创建BitstampWSS
实例(类实例的内部实例),并且它已启动。因此,任何调用回调的消息都将调用BitstampWSS
对象的回调,而不是类中的回调。
我认为这将实现您的期望:
from bitex.api.WSS import BitstampWSS
class Bitstamp(BitstampWSS):
def __init__(self):
super().__init__() # calls BitstampWSS.__init__()
self.channels = ['order_book_xrpusd']
def order_book_callback(self, pair, data):
print(pair)
def xrpusd_ob_callback(self, data):
print(data)
bitstamp = Bitstamp()
bitstamp.start()