子类调用其超类方法

时间:2014-04-09 18:18:24

标签: python python-2.7

请我有一个WN的子类,它是N的子类.N有一个方法create_nl(),它将pos字典中的键和值附加到两个空列表nl和nv。我的问题是如何在子类中编写一个方法来调用类N中的create_nl()方法,使得wr()中的A和B从超类方法create_nl()中的nl列表中获得随机值。我有为下面编写的代码,但它会产生错误。谢谢

import random as rand

pos = {1:(0, 0.1), 2:(0, 0.), 3:(0, 0.3), 4:(0, 0.4), 5:(0, 0.5), 6:(0, 0.6) }

class N(object):

    def __init__(self, name):
        self.name = name

    def create_nl(self):
        nv = []
        nl = []
        for key, value in pos.iteritems():
            nl.append(key)
            nv.append(value)
        return nl

nn = N("CT")
nn.create_nl()


class WN(N):

def n(self):
    return super(WN, self).create_nl()

def wr(self):

    count = 0

    while count < 1:

        A = int(rand.choice(self.n))
        B = int(rand.choice(self.n))

    count += 1

1 个答案:

答案 0 :(得分:1)

您可以直接在子类实例上调用超类方法。如果您重写了子类中的方法并且想要访问超类版本而不是覆盖,则只需使用super

class WN(N):
    def wr(self):
        nl = self.create_nl() # calls superclass method, which we have not overridden

        A = random.choice(nl) # use the return value
        B = random.choice(nl)

请注意,使用create_nl之类的方法来访问全局数据而不是实例数据有点奇怪。您random.choice来电可以直接在pos直接轻松完成!

相关问题