powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / небольшой вопорс по Python
8 сообщений из 8, страница 1 из 1
небольшой вопорс по Python
    #38744011
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, ситуация значит следующая, есть некий базовый класс с несколькими переменными-членами(типа общими для всех потомков) и несколько наследованных от него потомков. К потомках есть метод 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
небольшой вопорс по Python
    #38744133
ndbn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont know
Код: plaintext
#ff0000

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

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

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

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

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

вот так
...
Рейтинг: 0 / 0
небольшой вопорс по Python
    #38744313
ndbn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
небольшой вопорс по Python
    #38744317
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ndbn,

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

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

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


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