首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用实例作为第一个参数的未绑定方法获得了字符串,但需要其他参数

使用实例作为第一个参数的未绑定方法获得了字符串,但需要其他参数
EN

Stack Overflow用户
提问于 2012-05-18 09:01:15
回答 2查看 40.7K关注 0票数 10
代码语言:javascript
代码运行次数:0
运行
复制
#Maps.py
class Maps(object):

    def __init__(self):
        self.animals = []
        self.currently_occupied = {}

    def add_animal(self, name):
        self.animals.append(name)
        self.currently_occupied = {robot:[0, 0]}



#animal.py
class Animal(object):

    def __init__(self, name):
        import maps
        maps.add_animal(rbt)
        self.name = name


#Tproject.py
from Animal import Animal
Fred = Animal("Fred")

这给我一个错误,看起来像这样

TypeError:必须使用映射实例作为第一个参数调用未绑定的方法add_animal() (改为获取字符串实例)

但我不知道它是什么意思,我也不能通过谷歌或雅虎搜索它:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-18 09:20:23

您需要一个Maps实例,而不是Maps类:

代码语言:javascript
代码运行次数:0
运行
复制
 maps.Maps.add_animal("Fred") # gives error

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

因此,对于Animal类,每个Animal实例都应该有一个mymap属性,或者作为一个全局对象(只要最适合您的情况)。

票数 13
EN

Stack Overflow用户

发布于 2012-05-18 09:13:05

您正在调用一个未绑定的方法,这意味着您将从一个类本身访问一个方法,而不是通过一个实例(因此Python不知道哪个实例应该用作self)。这段代码应该不会给出如下所示的错误,但我假设您正在执行如下操作

代码语言:javascript
代码运行次数:0
运行
复制
maps.Maps.add_animal(rbt)

现在还不清楚你想要做什么,或者我会给出一个如何修复它的建议。

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

https://stackoverflow.com/questions/10645444

复制
相关文章

相似问题

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