当我尝试将列表传递给我的 class 属性时发生错误
error occurs when I try to pass a list to my class attributes
我正在尝试使用 class 方法将列表传递到我的 class 属性:
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)
超级class。
然而,当我尝试将相同的函数传递给子程序时class,出现错误:
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
是不是因为我的subclass多了一个参数'fine_tune_at'?如果是这样,我该如何避免这个问题?
我找到问题所在了:
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)
我没有正确继承超类中的属性。
我正在尝试使用 class 方法将列表传递到我的 class 属性:
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)
超级class。
然而,当我尝试将相同的函数传递给子程序时class,出现错误:
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
是不是因为我的subclass多了一个参数'fine_tune_at'?如果是这样,我该如何避免这个问题?
我找到问题所在了:
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)
我没有正确继承超类中的属性。