为什么第一类函数表示法在类方法中不起作用



你好,希望你们做得很好。

我有一个类,它有几个方法,还有一个runner,它随机执行几个类方法中的一个函数。我曾尝试在runner函数中使用First Class Function方法,但runner无法识别函数名称。有人能告诉我为什么吗?

我的代码:

import random

class A:
def delete_random_character(self, s):
"""Returns s with a random character deleted"""
if s == "":
return s
pos = random.randint(0, len(s) - 1)
# print("Deleting", repr(s[pos]), "at", pos)
return s[:pos] + s[pos + 1:]

def insert_random_character(self, s):
"""Returns s with a random character inserted"""
pos = random.randint(0, len(s))
random_character = chr(random.randrange(32, 127))
# print("Inserting", repr(random_character), "at", pos)
return s[:pos] + random_character + s[pos:]

def flip_random_character(self, s):
"""Returns s with a random bit flipped in a random position"""
if s == "":
return s
pos = random.randint(0, len(s) - 1)
c = s[pos]
bit = 1 << random.randint(0, 6)
new_c = chr(ord(c) ^ bit)
# print("Flipping", bit, "in", repr(c) + ", giving", repr(new_c))
return s[:pos] + new_c + s[pos + 1:]

def runner(self, s):
"""Return s with a random mutation applied"""
mutators = [
delete_random_character, ################ Cant recognizes the function why????
insert_random_character, 
flip_random_character
]
mutator = random.choice(mutators)
# print(mutator)
return mutator(s)

您没有使用对初始化mutators的类函数的引用;你应该

mutators=[
self.delete_random_character,
self.insert_random_character, 
self.flip_random_character
]

最新更新