Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2014 11:18:04

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

Наследование методов классов

Добрый день, имеются классы, затем один класс обрабатывает все классы методом одного класса. Вопрос как обращаться к методам класса(их много)?

class Print_all:
        def __init__(self, element):
            for this in element:
                print (this, end=", ") 
class Part_pc:
    def __init__(self):
        self.zhelezo = ["материнская плата", "процессор", "озу",
                        "винчестер", "кейс"]      
class Add_to_pc:
    def __init__(self):
        self.extra = ["дисковод", "видеокарта",
                      "звуковая карта", "принтер",
                      "сетевая карта"]
        
class Use_work_pc:
    def __init__(self):
        self.external  = ["клавиатура", "мышь", "монитор", "наушники"]
class Printer(Print_all, Part_pc, Add_to_pc, Use_work_pc):
    def __init__(self):
        word = str("word")
        super().__init__("hi") # обращаюсь к первостоящему классу, 
                                       # он и будет обрабатывать методы остальных классов
printer = Printer()

Отредактировано MetalHead (Фев. 7, 2014 11:18:51)

Офлайн

#2 Фев. 7, 2014 13:25:00

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Наследование методов классов

class A(object):
    def __init__(self):
        print 'a'
class B(object):
    def __init__(self):
        print "b"
class C(A, B):
    def __init__(self):
        super(C, self).__init__()
class D(B, A):
    def __init__(self):
        super(D, self).__init__()
class E(A, B):
    def __init__(self):
        A.__init__(self)
        B.__init__(self)
        
print "init C"
C()
print "init D"
D()
print "init E"
E()
Смотрите что такое MRO
При множественном наследовании методы с одинаковыми именами заменяют друг друга.

Отредактировано PanovSergey (Фев. 8, 2014 14:18:03)

Офлайн

#3 Фев. 8, 2014 13:35:56

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

Наследование методов классов

PanovSergey, такая ситуация, не получается этим методом обработать данные:
TypeError: __init__() missing 1 required positional argument: ‘element’

class Print_all:
        def __init__(self, element):
            for this in element:
                print (this, end=", ") 
class Part_pc(object):
        zhelezo = ["материнская плата", "процессор", "озу",
                        "винчестер", "кейс"]     
class Add_to_pc:
    def __init__(self):
        self.extra = ["дисковод", "видеокарта",
                      "звуковая карта", "принтер",
                      "сетевая карта"]
        
class Use_work_pc:
    def __init__(self):
        self.external  = ["клавиатура", "мышь", "монитор", "наушники"]
class Printer(Print_all, Part_pc, Add_to_pc, Use_work_pc):
    def __init__(self):
        print(Part_pc.zhelezo)# выводит
        var = str("world") 
        Print_all.__init__(var) # не могу обратиться. Почему выбивает ошибку?
printer = Printer()

Офлайн

#4 Фев. 8, 2014 14:15:47

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Наследование методов классов

Вам бы книжку по основам языка почитать
Только без обид, действительно нужно.
Внимательно посмотрите как у вас с классе Print_all, определен метод __init__, сколько у него параметров?
А сколько вы ему передаете? Ответьте не вопрос себе знаете ли вы что такое self и для чего его пишут первым параметром в определении методов экземпляра класса. Если после того как ответите на эти вопросы не получится пишите, помогу разобраться.

Офлайн

#5 Фев. 9, 2014 13:18:09

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

Наследование методов классов

PanovSergey, при многом благодарю, понял в чем проблема. Я как бы в Python месяца 1,5, при этом не имел ранее опыта работы с другими яп. Ну, self обозначает как бы принадлежность к классу/методу. А вот книжки есть интересные, чтобы не уснуть? Также вопрос, смотрите вывод:

print (this, end=", ")
Вот выводит что-то типа:
материнская плата, процессор, озу, винчестер, кейс,
Можно ли убрать последню запятую, заменив другим знаком?

Офлайн

#6 Фев. 9, 2014 13:57:57

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Наследование методов классов

Можно ли убрать последнюю запятую, заменив другим знаком?
Посмотрите метод join у строки, заменить не даст, но последнюю запятую писать не будет.
Я как бы в Python месяца 1,5, при этом не имел ранее опыта работы с другими яп
Поэтому и стараюсь вас направить а не дать готовое решение
книжки есть интересные, чтобы не уснуть?
В книгах я совершенно некомпетентен, зайдите в соответвующую тему там 100% подскажут, а так Математика и Практика рулят

Отредактировано PanovSergey (Фев. 9, 2014 14:18:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version