Ошибка с помощью функции super (). Sub (n1, n2) в python

Решение, которое обрабатывает также отрицательные значения с формированием плавающего образца.

Все еще нуждается в настройках смещения.

df=pd.DataFrame({'A':np.random.rand(2)-1,'B':np.random.rand(2)},index=['val1','val2'] )
ax = df.plot(kind='bar', color=['r','b']) 
x_offset = -0.03
y_offset = 0.02
for p in ax.patches:
    b = p.get_bbox()
    val = "{:+.2f}".format(b.y1 + b.y0)        
    ax.annotate(val, ((b.x0 + b.x1)/2 + x_offset, b.y1 + y_offset))

1
задан MSeifert 13 July 2018 в 13:43
поделиться

3 ответа

Этот вопрос, похоже, подобен этому . В Python 2.7 вызов функции super нуждается в следующих аргументах:

super(OperationWithMul,self).Sub(n1,n2)

И ваш корневой класс должен наследовать от класса объекта:

class Operation(object):

При этом вы определите свой класс как класс нового стиля, который является стандартом для Python 3.0 и имеет ряд преимуществ.

0
ответ дан Stuart Hargreaves 17 August 2018 в 12:45
поделиться

В Python 2.7 вы должны записать его следующим образом:

super(OperationWithMul, self).Sub(n1,n2)

Подробнее см. в документации super() Python 2.7 .

0
ответ дан blhsing 17 August 2018 в 12:45
поделиться

В Python 2 для использования super вам нужно использовать классы нового стиля:

class Operation(object):  # makes the base-class a new-style class
    # your code

class OperationWithMul(Operation):
    # your code

# ...

И вам нужно передать текущий класс и экземпляр явно super:

super(OperationWithMul, self).Sub(n1, n2)

В Python 3 у вас не будет этих проблем, потому что все классы являются новыми, а super запрашивают необходимые аргументы. Несмотря на то, что это, вероятно, выходит за рамки вопроса, вам стоит подумать о переходе на Python 3.

Также имена методов в Python обычно начинаются с буквы нижнего регистра. Это не жесткое правило, но может сделать ваш код более понятным для других программистов на Python (например, я).

0
ответ дан MSeifert 17 August 2018 в 12:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: