如何解决为什么 First Class Function Notation 在类方法中不起作用?
你好,希望你们一切顺利。
我有一个包含多个方法的类,并且我有一个运行程序,它从几个类方法中随机执行一个函数。我曾尝试在 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),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
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。