将元组传递到函数中

2024-09-27 04:13:28 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本上我想要的是使用这个函数:

def __init__(self, myTuple: tuple):

    for i in myTuple:
        print(i[1])
        self.dzien_tyg = i[1]
        self.godz_rozp = i[2]
        self.ilosc_godz = i[3]
        self.czestatliwosc = i[4]
        self.id_prowadzacego = i[5]
        self.id_sali = i[6]
        self.id_przedmiotu = i[7]
        self.rodzaj = i[8]
        self.nr_grupy = i[9]
        self.id_studia = i[10]
        self.nr_semetru = i[11]
        self.id_specjalnosci = i[12]

使用此代码:

^{pr2}$

我的皮查姆说:

TypeError: __init__() takes 2 positional arguments but 3 were given

“row”看起来怎么样:

(0, dzien        1
godz         1
ilosc        2
tyg          0
id_naucz    52
id_sala     79
id_prz      13
rodz         W
grupa        1
id_st       13
sem          1
id_spec      0
Name: 0, dtype: object)

我不知道pycharms在哪里看到这3个参数,以及如何修正它


Tags: 函数inselfidforinitdefnr
1条回答
网友
1楼 · 发布于 2024-09-27 04:13:28

尝试将*row替换为row[1]

for row in df.iterrows():
    print(row)
    object = Grupa(row[1])

当您iterrows()时,从打印中可以看到的每一行都是一个两元素元组,第一个元素是行索引,第二个元素是包含实际数据的Series对象,当您使用*row时,您会将index和Series对象都传递给构造函数。但是从__init__定义来看,您似乎只需要row对象。在


另外,如果每一行都是一个对象,那么您不需要在__init__中使用for循环,只需对原始代码进行最小的更改:

^{pr2}$

或者,您可以使用实际索引更安全地访问:

def __init__(self, myTuple: tuple):

    i = myTuple
    print(i['dzien'])
    self.dzien_tyg = i['dzien']     
    self.godz_rozp = i['godz']     
    self.ilosc_godz = i['ilosc']    
...

相关问题 更多 >

    热门问题