Python 错误:未绑定方法;方法名称";必须用“调用”;“类名”;实例作为第一个参数(取而代之的是classobj实例)

Python 错误:未绑定方法;方法名称";必须用“调用”;“类名”;实例作为第一个参数(取而代之的是classobj实例),python,class,python-2.7,methods,matplotlib,Python,Class,Python 2.7,Methods,Matplotlib,我希望你们能帮我。 以下代码给了我这个错误: Traceback (most recent call last): File "C:\Python27\Lib\idlelib\Tarea5.py", line 60, in <module> bg.addBandit(b) TypeError: unbound method addBandit() must be called with BanditGroup instance as first argument (got

我希望你们能帮我。 以下代码给了我这个错误:

Traceback (most recent call last):
  File "C:\Python27\Lib\idlelib\Tarea5.py", line 60, in <module>
    bg.addBandit(b)
TypeError: unbound method addBandit() must be called with BanditGroup instance as first argument (got classobj instance instead)
回溯(最近一次呼叫最后一次):
文件“C:\Python27\Lib\idlelib\Tarea5.py”,第60行,在
背景:addBandit(b)
TypeError:必须以BandidGroup实例作为第一个参数调用未绑定方法addbindian()(取而代之的是Get classobj实例)
守则:

from numpy import *
from matplotlib import pyplot as p
class Bandit:
    power = random.uniform(15,46)
    life = random.uniform(40,81)
    def __init__(self, power, life):
        self.power = power
        self.life = life
class BanditGroup:
    def __init__(self,a):
        self.group = [a] #Where 'a' is an object of the class Bandit
    def addBandit(self,b):
        self.group.append(b) #Where 'b' is an object of the class Bandit
        return self.group

howmanygroups = random.randint(4,11)
i = 0
j = 0
while i <= howmanygroups:
    bg = BanditGroup
    howmanybandits = random.randint(1,11)
    while j <= howmanybandits:
        b = Bandit
        bg.addBandit(b) #<-- line 60
        j+=1
    bgposx = random.uniform(0,50000)
    bgposy = random.uniform(0,50000)
    p.plot(bgposx,bgposy,'r^')
    i+=1
从numpy导入*
从matplotlib将pyplot导入为p
班匪:
功率=随机均匀(15,46)
寿命=随机。均匀(40,81)
定义初始(自我、力量、生命):
自我力量=力量
自我生活
类别组:
定义初始化(self,a):
self.group=[a]#其中'a'是Bandit类的对象
def addBandit(自我,b):
self.group.append(b)#其中'b'是Bandit类的对象
返回自组
howmanygroups=random.randint(4,11)
i=0
j=0

而问题是
addBandit
需要使用
BanditGroup
的实例。在类名后添加
(…)
,将创建一个:

bg = BanditGroup(...)
现在,您有
bg
指向类本身,而不是它的实例

同样的事情也需要在这里使用
Bandit

b = Bandit(...)


注意:
表示传入适当的参数。您使用所需的
a
参数和
Bandit创建了
BanditGroup.\uuuuuu init\uuuuuuuuu
,并使用所需的
power
life
参数创建了
Bandit组。因为我不知道您希望这些是什么,所以我将它们遗漏了。

问题是
addBandit
需要使用
BanditGroup
的实例。在类名后添加
(…)
,将创建一个:

bg = BanditGroup(...)
现在,您有
bg
指向类本身,而不是它的实例

同样的事情也需要在这里使用
Bandit

b = Bandit(...)

注意:
表示传入适当的参数。您使用所需的
a
参数和
Bandit创建了
BanditGroup.\uuuuuu init\uuuuuuuuu
,并使用所需的
power
life
参数创建了
Bandit组。因为我不知道您希望这些是什么,所以我将它们省略了。

尝试将代码更改为(注意类实例化周围的括号):

而我尝试将代码更改为(注意类实例化周围的括号):


while iYes在创建Bandit和BanditGroup类的实例时可能需要paren。否则,您将为变量分配一个类,而不是一个类的实例


例如:bg=BanditGroup()

是,在创建Bandit和BanditGroup类的实例时,可能需要参数。否则,您将为变量分配一个类,而不是一个类的实例


例如:bg=BanditGroup()

你实际上并没有制造任何强盗或一群强盗来安置他们
Bandit
BanditGroup
是类;你的代码现在试图做的事情类似于试图坐在椅子的抽象概念上,而不是去宜家找一把特定的椅子坐下。你实际上没有制造任何强盗或一群强盗来安置他们
Bandit
BanditGroup
是类;您的代码现在试图做的事情类似于试图坐在椅子的抽象概念上,而不是去宜家找一把特定的椅子坐。不要忘记构造函数接受参数。@user2357112 D'oh!没错:)在匆忙中,我忘了。是的!它是一个没有参数的构造函数!我删除了BanditGroup构造函数上请求的参数,所以现在它可以工作了!谢谢不要忘记构造函数接受参数。@user2357112 D'oh!没错:)在匆忙中,我忘了。是的!它是一个没有参数的构造函数!我删除了BanditGroup构造函数上请求的参数,所以现在它可以工作了!谢谢是的,就是这样。。。我的解决方案是删除组的def__init上所需的元素a。现在它工作得很好!谢谢!是的,就是这样。。。我的解决方案是删除组的def__init上所需的元素a。现在它工作得很好!谢谢!