请我有一个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
答案 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
直接轻松完成!