有以下问题:
- on_tick函数的调用顺序,个人感觉应该先执行信号的on_tick
- 为什么要用super(MultiSignalStrgety, self).on_tick(tick), MultiSignalStrategy的父类不是TargetPosTemplate吗? 他为什么super()自己?
- 网上也找不到什么有用信息,实在想不清楚,个人技术比较水,学习python3个月,接触vnpy1个月,希望论坛大神指点一下
有以下问题:
我看了一下,它的init函数用的还是python3的写法(省略类名和self)
def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
""""""
super().__init__(cta_engine, strategy_name, vt_symbol, setting)
self.rsi_signal = RsiSignal(self.rsi_window, self.rsi_level)
self.cci_signal = CciSignal(self.cci_window, self.cci_level)
self.ma_signal = MaSignal(self.fast_window, self.slow_window)
但是后面的函数比如你贴的却用的是python2,python2和3的具体区别可以看 这个,可以看出它的写法是没错的,super()的第一个参数就是类自己,但是我比较不明白的是为什么这里既用了py2的写法又用了py3。我也是刚学python水平有限,理解可能有误,不过感觉自己了解的正好可以帮到你所以就回答了,希望大家可以共同进步
neowod wrote:
我看了一下,它的init函数用的还是python3的写法(省略类名和self)
def __init__(self, cta_engine, strategy_name, vt_symbol, setting): """""" super().__init__(cta_engine, strategy_name, vt_symbol, setting) self.rsi_signal = RsiSignal(self.rsi_window, self.rsi_level) self.cci_signal = CciSignal(self.cci_window, self.cci_level) self.ma_signal = MaSignal(self.fast_window, self.slow_window)
但是后面的函数比如你贴的却用的是python2,python2和3的具体区别可以看 这个,可以看出它的写法是没错的,super()的第一个参数就是类自己,但是我比较不明白的是为什么这里既用了py2的写法又用了py3。我也是刚学python水平有限,理解可能有误,不过感觉自己了解的正好可以帮到你所以就回答了,希望大家可以共同进步
这个写法问题我也发现了,我只是有点奇怪,在自己的class里面super自己, 不太懂这是什么意思
你可以理解为super不带括号本身代表的含义就是继承父类,具体继承哪个父类是由子类声明时后面的括号的内容决定的即 class Child(Parent):
,super后面的括号里的东西无论什么情况内容都不会变,即子类的名字和self,self是习惯所有类里的函数都有,所以super(本类名,self) 代表了 一个子类的继承父类的函数,但是子类名其实不用说,大家都知道,因为这个函数就是在子类里定义的,是哪个子类就不需要额外标注了,故而在Python3里就把其和self省略了
neowod wrote:
你可以理解为super不带括号本身代表的含义就是继承父类,具体继承哪个父类是由子类声明时后面的括号的内容决定的即
class Child(Parent):
,super后面的括号里的东西无论什么情况内容都不会变,即子类的名字和self,self是习惯所有类里的函数都有,所以super(本类名,self) 代表了 一个子类的继承父类的函数,但是子类名其实不用说,大家都知道,因为这个函数就是在子类里定义的,是哪个子类就不需要额外标注了,故而在Python3里就把其和self省略了
大概懂意思了,其实就是调用一下从父类继承的函数而已,这么一来就清晰了,谢谢前辈!!!
不客气,我也只是把自己的理解说一下