Почему я должен указать свой собственный класс при использовании супер (), и есть ли способ обойти его?

Таким образом, это работает с использованием пакета zoo, чтобы сначала избавиться от NA, а затем выполнить сравнение со смещением на одну строку.

zed <- zed %>%
    dplyr::mutate(possIdTemp = zoo::na.locf(possessionName)) %>%
    dplyr::mutate(isNewPossession = c(1, ifelse(possIdTemp[2:length(possIdTemp)] != possIdTemp[1:(length(possIdTemp)-1)], 1, 0)))

Пожалуйста, я открыт для лучшего решения этой проблемы, в частности, мне не нравится строка кода c(1, ifelse(possIdTemp[2:length(possIdTemp)] != possIdTemp[1:(length(possIdTemp)-1)], 1, 0)) - спасибо!

14
задан hichris123 6 March 2016 в 21:46
поделиться

3 ответа

BDFL соглашается. Посмотрите Бодрость духа 367 - Новый Супер для 2,6 и PEP 3135 - Новый Супер для 3,0.

6
ответ дан 1 December 2019 в 13:10
поделиться

Ваши пожелания осуществляются:

Просто используйте python 3.0. В нем Вы просто используете super() и это делает super(ThisClass, self).

Документация здесь. Пример кода из документации:

class C(B):
    def method(self, arg):
        super().method(arg)    
        # This does the same thing as: super(C, self).method(arg)
11
ответ дан 1 December 2019 в 13:10
поделиться

можно также постараться не написать имя реального класса в более старых версиях Python при помощи

def __init__(self):
    super(self.__class__, self)
    ...
0
ответ дан 1 December 2019 в 13:10
поделиться
Другие вопросы по тегам:

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