LINUX.ORG.RU

маленький вопрос по Python

 


0

2

Приветствую, ситуация значит следующая, есть некий базовый класс с несколькими переменными-членами(типа общими для всех потомков) и несколько наследованных от него потомков. К потомках есть метод save, который возвращает строчку со значением всех переменных класса: Примерно так:

class Primitive:
    def __init__(self):
        self.type       = None
        self.thickness  = 1
        self.color      = "#000000"

    def save(self):
        pass
    
    def load(self, values):
        pass


class Line(Primitive):
    def __init__(self):
        self.x1 = 0
        self.x2 = 0
        self.y1 = 0
        self.y2 = 0

    def save(self):
        return  self.__class__.__name__ + " " +\
                str(self.x1)            + " " +\
                str(self.y1)            + " " +\
                str(self.x2)            + " " +\
                str(self.y2)            + " " +\
                str(super(Line, self).color)   # <---- ? как обратиться к родителю, чтобы подтянуть значения эго перемнных

    def load(self):
        pass

if __name__ == "__main__":
    line = Line()
    print line.save()

Но возникает вопрос, как из потомка обратиться к родителю, чтобы получить значения его переменных? Т.е на выходе должно быть что-то вроде:

Line 10 10 50 50 line 1 #ff0000
★★★★★

Последнее исправление: xterro (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

занудство заменяет здравый смысл.

Это не занудство, это и есть здравый смысл. Если возникает спор по поводу субъективных элементов, надо перевести его в объективную плоскость. Конкатенация против join это вопрос личных предпочтений либо выбранного стиля кодирования; никаких объективных причин гнаться за скоростью в этой функции вообще нет.

А если в фразе есть «Убивать», она автоматически теряет право на какое бы то ни было отношение к «здравому смыслу».

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Это не занудство, это и есть здравый смысл.

Бенчмарк некорректен ИМХО. И повторю: + не тормозит, тормозит +=.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от i-rinat

никаких объективных причин гнаться за скоростью в этой функции вообще нет.

А я еще раз повторю, дело не в скорости, а в том, что код со множеством \ + " " + выглядит плохо по сравнению с вариантом с «join». И дело не в стиле. Что, если атрибутов будет пара десятков? Значит, и " " умножится на 20.

Virtuos86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.