首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试将列表传递给我的类属性时出错

尝试将列表传递给我的类属性时出错
EN

Stack Overflow用户
提问于 2020-06-09 21:23:40
回答 1查看 19关注 0票数 0

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

代码语言:javascript
复制
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)

这对超类来说很好用。

但是,当我试图将相同的函数传递给子类时,出现了一个错误:

代码语言:javascript
复制
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‘?如果是这样,我如何避免这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-09 22:44:25

我找到了问题所在:

代码语言:javascript
复制
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, train_data, train_labels, val_data, val_labels):
        super(Fine_Tune_Model, self).__init__(train_data, train_labels, val_data, val_labels)
        self.fine_tune_at = fine_tune_at

fine_tune_model = Fine_Tune_Model.list_to_data(data_lsit)

我没有正确地继承超类中的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62283690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档