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。现在它工作得很好!谢谢!