如果没有为我传入此类的对象分配值,我无法弄清楚如何分配值。
我知道这段代码看起来有些复杂,但我把它作为一个例子来回答我的问题。
该类只是为作为对象传入的字符串中的每个字母分配一个数值。然后,pairs.generate将打印与给定的任何字母相关联的数字。如果给出的字母不在创建的字典中,则返回0.因此,如果字典为空,则将为给定的任何字母输出0。
我想要做的是如果没有传入对象则输出0,但是我收到以下错误: TypeError: init ()只需要2个参数(给定1个)
要查看工作原理,请传递字符串" ABCD"作为对象并更改传递给pairs.generate()的字母。为了演示在没有传递对象时我想要发生什么,在("")中传递一个空字符串。这将输出0,这是我想要在没有传递对象而不是接收错误消息时发生的事情。
class Pairs(object):
def __init__(self, letters):
print letters
counter = 1
d = {}
for x in letters:
d[x] = counter
counter +=1
self.d = d
print self.d
pass
def generate(self, letter):
print "this is the key", letter
if letter not in self.d:
print "this key isn't in the dictionary:", letter
return 0
else:
print "this is the value", self.d[letter]
return self.d[letter]
enter = Pairs()
print enter.generate("F")
修改 我试过从我的理解中传递一个默认参数。我尝试了一些想法:
class Plugboard(object):
if object is None:
object = ""
但是,我仍然收到同样的错误。
答案 0 :(得分:1)
您需要显式传递 init 方法所需的参数,或者向 init 添加默认参数。以下是包含默认参数的示例
class Pairs(object):
def __init__(self, letters=""): # added default value for letters
print (letters)
counter = 1
d = {}
for x in letters:
d[x] = counter
counter += 1
self.d = d
print(self.d)
pass # this doesn't do anything
def generate(self, letter):
print ("this is the key", letter)
if letter not in self.d:
print ("this key isn't in the dictionary:", letter)
return 0
else:
print ("this is the value", self.d[letter])
return self.d[letter]
enter = Pairs() # this calls __init__, should pass 'letters'
print (enter.generate("F"))