vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 25
声望: 0

有以下问题:

  1. on_tick函数的调用顺序,个人感觉应该先执行信号的on_tick
  2. 为什么要用super(MultiSignalStrgety, self).on_tick(tick), MultiSignalStrategy的父类不是TargetPosTemplate吗? 他为什么super()自己?
  3. 网上也找不到什么有用信息,实在想不清楚,个人技术比较水,学习python3个月,接触vnpy1个月,希望论坛大神指点一下
  4. description
Member
avatar
加入于:
帖子: 23
声望: 0

我看了一下,它的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水平有限,理解可能有误,不过感觉自己了解的正好可以帮到你所以就回答了,希望大家可以共同进步

Member
avatar
加入于:
帖子: 25
声望: 0

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自己, 不太懂这是什么意思

Member
avatar
加入于:
帖子: 23
声望: 0

你可以理解为super不带括号本身代表的含义就是继承父类,具体继承哪个父类是由子类声明时后面的括号的内容决定的即 class Child(Parent):,super后面的括号里的东西无论什么情况内容都不会变,即子类的名字和self,self是习惯所有类里的函数都有,所以super(本类名,self) 代表了 一个子类的继承父类的函数,但是子类名其实不用说,大家都知道,因为这个函数就是在子类里定义的,是哪个子类就不需要额外标注了,故而在Python3里就把其和self省略了

Member
avatar
加入于:
帖子: 25
声望: 0

neowod wrote:

你可以理解为super不带括号本身代表的含义就是继承父类,具体继承哪个父类是由子类声明时后面的括号的内容决定的即 class Child(Parent):,super后面的括号里的东西无论什么情况内容都不会变,即子类的名字和self,self是习惯所有类里的函数都有,所以super(本类名,self) 代表了 一个子类的继承父类的函数,但是子类名其实不用说,大家都知道,因为这个函数就是在子类里定义的,是哪个子类就不需要额外标注了,故而在Python3里就把其和self省略了

大概懂意思了,其实就是调用一下从父类继承的函数而已,这么一来就清晰了,谢谢前辈!!!

Member
avatar
加入于:
帖子: 23
声望: 0

不客气,我也只是把自己的理解说一下

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3