首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python方法从classB作为参数传递给classA,然后从传递的classB方法调用classA中的方法

python方法从classB作为参数传递给classA,然后从传递的classB方法调用classA中的方法
EN

Stack Overflow用户
提问于 2019-09-18 06:03:51
回答 1查看 43关注 0票数 1

我知道这个标题听起来很让人困惑,但请容忍我。我编码我的第一个游戏,我试图建立一个类别的AI (称为AI_mode),我的obj_creature类可以用来获取任何类型的人工智能,生物实体需要。我将一个方法从AI_mode作为变量传递给obj_creature。从AI_mode传递给obj_creature的方法从obj_creature类内部调用另一个方法。下面是一些简化的代码:

代码语言:javascript
复制
class obj_creature:
    def __init__(self, npc_mode=None):
        self.npc_mode=npc_mode

    def move(self, word):
        print(word)


class AI_mode:
    def ai_move_left(self):
        self.owner.move("Hello World")


enemy_ai=AI_mode().ai_move_left
enemy_creature=obj_creature(npc_mode=enemy_ai) 


if enemy_creature.npc_mode:
    enemy_creature.npc_mode()

此代码给出了错误:

代码语言:javascript
复制
self.owner.move("Hello World")
AttributeError: 'AI_mode' object has no attribute 'owner'

我很确定.owner()不是在那里使用的正确东西,因为我从来没有声明obj_creature是所有者,但我不确定在它的位置上使用什么。当我试图声明obj_creature为AI_mode的所有者时,如下所示:

代码语言:javascript
复制
class obj_creature:
    def __init__(self, npc_mode=None):
        self.npc_mode=npc_mode
        if npc_mode:
            npc_mode.owner=self

我知道这个错误:

代码语言:javascript
复制
npc_mode.owner=self
AttributeError: 'method' object has no attribute 'owner'

我的最终目标是使所有来自同一类的大量人工智能都能很容易地分配给任何种类的生物,并能够用相同的命令调用分配给它的任何AI。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-18 06:30:17

查找以下代码设计:

代码语言:javascript
复制
class obj_creature:
    def __init__(self, npc_mode=None):
        self.npc_mode=npc_mode

    def move(self, word):
        print(word)


class AI_mode:
    def __init__(self, owner):
        self.owner = owner

    def ai_move_left(self):
        self.owner.move("Hello World")


enemy_creature=obj_creature()
enemy_ai=AI_mode(enemy_creature)
enemy_creature.npc_mode=enemy_ai.ai_move_left

if enemy_creature.npc_mode:
    enemy_creature.npc_mode()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57986007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档