__init__() 缺少 4 个必需的位置参数:
__init__() missing 4 required positional arguments:
我已经创建了这段代码,但我一直收到错误消息:
TypeError: __init__()
缺少 4 个必需的位置参数:'exercise'
、'friendliness'
、'intelligence'
和 'drool'
下面是我的代码:
class Dog_card_player: #creates the class
def __init__(self,name, exercise, friendliness, intelligence, drool):
self.name = name
self.exercise = exercise#.random.randint(1,100)
self.friendliness = friendliness#.random.randint(1,100)
self.intelligence = intelligence#.random.randint(1,100)
self.drool = drool#.random.randint(1,100)
def Card_stats_player(self): #creates the stats for the card
print("Name: " + self.name)
print("Exercise: " + self.exercise)
print("Friendliness: " + self.friendliness)
print("Intelligence: " + self.intelligence)
print("Drool: " + self.drool)
def Printing_card_player():
with open ("dogswrite.txt") as f1:
Dog_name_player = Dog_card_player(f1.readline())
Dog_name_player.Card_stats_player()
Printing_card_player()
.readline()
方法仅 returns 一个字符串,.readlines()
returns 一个列表。当您需要多个字符串时,您将提供 1 个字符串作为 class 的参数。
您必须将 f1.readline()
的结果解析为单独的参数
假设您的文本文件格式如下
spot, 1, 2, 3, 4
会是这样的
m_input = f1.readline()
m_input = m_input.split(',')
Dog_name_player = Dog_card_player(m_input[0], m_input[1], m_input[2], m_input[3],m_input[4] )
您定义 class 的方式 需要 5 个参数才能创建:
class Dog_card_player: #creates the class
def __init__(self,name, exercise, friendliness, intelligence, drool):
如果在创建对象时假设一行包含五个参数,那么您应该 "extract" 从该行开始。也就是说,而不是
Dog_name_player = Dog_card_player(f1.readline())
你应该有这样的东西:
line = f1.readline()
pars = line.split() # or line.split(',') for a comma-separated list
if len(pars) < 5:
print("Not enough arguments")
return
Dog_name_player = Dog_card_player(*pars)
如果每一行总是正好有五个参数,那么你可以简单地这样做:
Dog_name_player = Dog_card_player(*f1.readline().split())
我已经创建了这段代码,但我一直收到错误消息:
TypeError: __init__()
缺少 4 个必需的位置参数:'exercise'
、'friendliness'
、'intelligence'
和 'drool'
下面是我的代码:
class Dog_card_player: #creates the class
def __init__(self,name, exercise, friendliness, intelligence, drool):
self.name = name
self.exercise = exercise#.random.randint(1,100)
self.friendliness = friendliness#.random.randint(1,100)
self.intelligence = intelligence#.random.randint(1,100)
self.drool = drool#.random.randint(1,100)
def Card_stats_player(self): #creates the stats for the card
print("Name: " + self.name)
print("Exercise: " + self.exercise)
print("Friendliness: " + self.friendliness)
print("Intelligence: " + self.intelligence)
print("Drool: " + self.drool)
def Printing_card_player():
with open ("dogswrite.txt") as f1:
Dog_name_player = Dog_card_player(f1.readline())
Dog_name_player.Card_stats_player()
Printing_card_player()
.readline()
方法仅 returns 一个字符串,.readlines()
returns 一个列表。当您需要多个字符串时,您将提供 1 个字符串作为 class 的参数。
您必须将 f1.readline()
的结果解析为单独的参数
假设您的文本文件格式如下
spot, 1, 2, 3, 4
会是这样的
m_input = f1.readline()
m_input = m_input.split(',')
Dog_name_player = Dog_card_player(m_input[0], m_input[1], m_input[2], m_input[3],m_input[4] )
您定义 class 的方式 需要 5 个参数才能创建:
class Dog_card_player: #creates the class
def __init__(self,name, exercise, friendliness, intelligence, drool):
如果在创建对象时假设一行包含五个参数,那么您应该 "extract" 从该行开始。也就是说,而不是
Dog_name_player = Dog_card_player(f1.readline())
你应该有这样的东西:
line = f1.readline()
pars = line.split() # or line.split(',') for a comma-separated list
if len(pars) < 5:
print("Not enough arguments")
return
Dog_name_player = Dog_card_player(*pars)
如果每一行总是正好有五个参数,那么你可以简单地这样做:
Dog_name_player = Dog_card_player(*f1.readline().split())