微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 First Class Function Notation 在类方法中不起作用?

如何解决为什么 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 举报,一经查实,本站将立刻删除。