Найти - Пользователи
Полная версия: Наследование методов классов
Начало » Python для новичков » Наследование методов классов
1
MetalHead
Добрый день, имеются классы, затем один класс обрабатывает все классы методом одного класса. Вопрос как обращаться к методам класса(их много)?
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()
PanovSergey
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
При множественном наследовании методы с одинаковыми именами заменяют друг друга.
MetalHead
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()
PanovSergey
Вам бы книжку по основам языка почитать
Только без обид, действительно нужно.
Внимательно посмотрите как у вас с классе Print_all, определен метод __init__, сколько у него параметров?
А сколько вы ему передаете? Ответьте не вопрос себе знаете ли вы что такое self и для чего его пишут первым параметром в определении методов экземпляра класса. Если после того как ответите на эти вопросы не получится пишите, помогу разобраться.
MetalHead
PanovSergey, при многом благодарю, понял в чем проблема. Я как бы в Python месяца 1,5, при этом не имел ранее опыта работы с другими яп. Ну, self обозначает как бы принадлежность к классу/методу. А вот книжки есть интересные, чтобы не уснуть? Также вопрос, смотрите вывод:
print (this, end=", ")
Вот выводит что-то типа:
материнская плата, процессор, озу, винчестер, кейс,
Можно ли убрать последню запятую, заменив другим знаком?
PanovSergey
Можно ли убрать последнюю запятую, заменив другим знаком?
Посмотрите метод join у строки, заменить не даст, но последнюю запятую писать не будет.
Я как бы в Python месяца 1,5, при этом не имел ранее опыта работы с другими яп
Поэтому и стараюсь вас направить а не дать готовое решение
книжки есть интересные, чтобы не уснуть?
В книгах я совершенно некомпетентен, зайдите в соответвующую тему там 100% подскажут, а так Математика и Практика рулят
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB