Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / небольшой вопорс по Python / 8 сообщений из 8, страница 1 из 1
11.09.2014, 12:04
    #38744011
I dont know
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
Приветствую, ситуация значит следующая, есть некий базовый класс с несколькими переменными-членами(типа общими для всех потомков) и несколько наследованных от него потомков. К потомках есть метод save, который возвращает строчку со значением всех переменных класса:
Примерно так:

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
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()



Но возникает вопрос, как из потомка обратиться к родителю, чтобы получить значения его переменных?
Т.е на выходе должно быть что-то вроде:
Код: plaintext
Line 10 10 50 50 line 1 #ff0000
...
Рейтинг: 0 / 0
11.09.2014, 13:24
    #38744133
ndbn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
I dont know
Код: plaintext
#ff0000

Откуда такое значение?!
Предположу, что в def __init__(self) класса Line нужно вызывать конструктор класса родителя, типа
super(Line, self).__init__ иначе переменная color остается не инициализированной, но я не питонщик, поэтому не уверен.
...
Рейтинг: 0 / 0
11.09.2014, 13:53
    #38744184
I dont know
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
ndbnI dont know
Код: plaintext
#ff0000

Откуда такое значение?!

Это просто строка, означающая код цвета.
...
Рейтинг: 0 / 0
11.09.2014, 14:03
    #38744211
ndbn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
I dont know,

такое значение нигде не задается.
...
Рейтинг: 0 / 0
11.09.2014, 14:33
    #38744258
I dont know
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
ndbn,

Задаётся, например в Tkinter(или в других биндингах GUI к питону, например GTK+), но в данном случае, это просто пример, в дальнейшем может буду другой формат цвета использовать :)
...
Рейтинг: 0 / 0
11.09.2014, 15:06
    #38744309
ndbn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
class Primitive(object):

вот так
...
Рейтинг: 0 / 0
11.09.2014, 15:08
    #38744313
ndbn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
ndbnclass Primitive(object):

вот так
А точнее
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
class Primitive(object):
    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
        super(Line, self).__init__()

    def save(self):
        return  self.__class__.__name__ + " " +\
                str(self.x1)            + " " +\
                str(self.y1)            + " " +\
                str(self.x2)            + " " +\
                str(self.y2)            + " " +\
                str(self.color)

    def load(self):
        pass

if __name__ == "__main__":
    line = Line()
    print line.save()
...
Рейтинг: 0 / 0
11.09.2014, 15:11
    #38744317
I dont know
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
небольшой вопорс по Python
ndbn,

Спасибо, я так же сделал, только написал вот так:

Код: python
1.
Primitive.__init__(self)

:)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / небольшой вопорс по Python / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]