无法使继承与模块中的super一起使用

主宰者

我已经了解了通过调用祖先的构造函数的新方法,super(..).__init__()并想使用它。我有一个包含三个文件的目录数据集:__init__.py

from .Dataset import Dataset
from .CSVDataset import CSVDataset

CSVDataset.py

import csv
import numpy as np
from dataset import Dataset


class CSVDataset(Dataset):
    """
    reads dataset from csv file
    """
    def __init__(self, file):
        Dataset.__init__(self)
        #super(CSVDataset, self).__init__()
        reader = csv.reader(open(file, 'r'), delimiter=',')
        x = list(reader)
        self.container = np.array(x).astype('double')

Dataset.py当我使用它../dataset像这样

from dataset import CSVDataset
data = CSVDataset('test/data1')

它仅适用于Dataset.__init__(self)它应该可以,super(CSVDataset, self).__init__()但不能。这是为什么?

更新:我得到错误

>>> data = CSVDataset('test/data1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "dataset/CSVDataset.py", line 13, in __init__
    super(CSVDataset, self).__init__()
TypeError: must be type, not classobj

数据集草稿:

class Dataset(Iterable):
    """
    base class representing dataset API.
    Remember, dataset is used for learning.
    """
    def __init__(self):
        self.container = None
        self.counter = None
    ....

class Iterable:
    def __iter__(self):
        self.counter = 0
        return self

    def __next__(self):
        try:
            label = self[self.counter]
            self.counter += 1
            return label
        except:
            raise StopIteration
马丁·彼得斯(Martijn Pieters)

您的Dataset课程是Python 2.x旧样式的课程super()仅适用于新样式的类,其中类层次结构最终从继承object

要修复,请Dataset从继承object

class Dataset(object):

另请参见Python中旧样式类和新样式类之间的区别是什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

@AttributeOverride无法与继承一起使用

Python的super()如何与多重继承一起使用?

Python super()无法与Enum参数一起使用

多重继承如何与super()和不同的__init __()参数一起使用?

将super()与Java中的引用一起使用

无法在Angular 5的tsconfig中使动态模块导入与模块esnext一起使用

Android Studio与模块一起使用

为什么super()无法与__new__以外的静态方法一起使用?

$ inc在MongoDB中无法与$ Push一起使用

Android Studio中的findViewByID无法与EditText一起使用

ReflectionTestUtils在春季测试中无法与@Autowired一起使用

春季启动中的@InitBinder无法与@RequestBody一起使用

to_json在Spark中无法与selectExpr一起使用

无法将OpenCV中的.dll与CMake一起使用

MsBuild无法与Teamcity中的NUnit一起使用

$ rootScope在AngularJs中无法与我一起使用

setState无法与React函数中的forloop一起使用

无法使DB :: query()与simpleXML中的变量一起使用

Firefox中的日期字段无法与MYSQL一起使用

FileField无法在Django中与ArrayField一起使用

无法使ObjectProperty与python中的Kivy一起使用

数组中的元素无法与in_array一起使用

showGeneralDialog中的barrierDismissible无法与Scaffold一起使用

jenkins管道中的fileExists无法与$ {variant}一起使用

Datepicker在开关/案例中无法与.after一起使用

对象类在 Swift 中无法与 RLMSupport 一起使用

使用任意类名时,媒体查询无法与CSS模块一起正常使用

泛型类型如何在Scala中与继承一起使用?

使用 Webpack 与主模块一起构建独立模块