猿问

当我尝试将列表传递给我的类属性时发生错误

我正在尝试使用类方法将列表传递给我的类属性:


class BASE_MODEL(object):

    def __init__(self, train_data, train_labels, val_data, val_labels):

        self.train_data, self.train_labels, self.val_data, self.val_labels = \

            train_data, train_labels, val_data, val_labels


    @classmethod

    def list_to_data(cls, data_list):

        train_data, train_labels, val_data, val_labels = data_list

        data = cls(train_data, train_labels, val_data, val_labels)

        return data


class Fine_Tune_Model(BASE_MODEL):

    def __init__(self, fine_tune_at=None):

        super(BASE_MODEL, self).__init__()

        self.fine_tune_at = fine_tune_at


fine_tune_model = Fine_Tune_Model.list_to_data(data_lsit)

这对超类很好用。


但是,当我尝试将相同的函数传递给子类时,会发生错误:


Traceback (most recent call last):

  File "E:/Studium/Thesis/Fine_Tuning.py", line 138, in <module>

    main()

  File "E:/Studium/Thesis/Fine_Tuning.py", line 133, in main

    fine_tune_model = Fine_Tune_Model.list_to_data(create_data.split_data(3000, 200))

  File "E:\Studium\Thesis\Train.py", line 32, in list_to_data

    data = cls(train_data, train_labels, val_data, val_labels)

TypeError: __init__() takes from 1 to 2 positional arguments but 5 were given


Process finished with exit code 1

是因为我的子类中多了一个参数“fine_tune_at”吗?如果是这样,我该如何避免这个问题?


翻阅古今
浏览 105回答 1
1回答

MMTTMM

我发现问题出在哪里:class BASE_MODEL(object):&nbsp; &nbsp; def __init__(self, train_data, train_labels, val_data, val_labels):&nbsp; &nbsp; &nbsp; &nbsp; self.train_data, self.train_labels, self.val_data, self.val_labels = \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; train_data, train_labels, val_data, val_labels&nbsp; &nbsp; @classmethod&nbsp; &nbsp; def list_to_data(cls, data_list):&nbsp; &nbsp; &nbsp; &nbsp; train_data, train_labels, val_data, val_labels = data_list&nbsp; &nbsp; &nbsp; &nbsp; data = cls(train_data, train_labels, val_data, val_labels)&nbsp; &nbsp; &nbsp; &nbsp; return dataclass Fine_Tune_Model(BASE_MODEL):&nbsp; &nbsp; def __init__(self, train_data, train_labels, val_data, val_labels):&nbsp; &nbsp; &nbsp; &nbsp; super(Fine_Tune_Model, self).__init__(train_data, train_labels, val_data, val_labels)&nbsp; &nbsp; &nbsp; &nbsp; self.fine_tune_at = fine_tune_atfine_tune_model = Fine_Tune_Model.list_to_data(data_lsit)我没有正确继承超类中的属性。
随时随地看视频慕课网APP

相关分类

Python
我要回答