Вопрос по теме "экземпляр - аргумент", раздела Классы.

Diglerharibo

Новичок
Пользователь
Авг 17, 2020
21
1
3
Windows 10
Python 3.8.3

Прочитал я значит эту тему и не до конца понимаю как ею пользоваться:
 Python. Программирование игр, визуализация данных, веб-приложения. Мэтиз Эрик.pdf - Profile 1...png

Так выглядит сам код. Основная идея заключается в том, что мы создаем отдельный класс для сохранения некоторых атрибутов другого класса( в данном случае ElectricCar), чтобы не переполнять последнего. Вопрос заключается в следующем, если мы все таки пользуемся этой методикой, то в нашем случае не происходит полного встраивания атрибута в ElectricCar и вызывать мы можем этот атрибут только при обращению к стороннему классу(в данном случае Battery)? Если так то в чем смысл этого метода?

class Class():
def __init___(self, one):
self.one = one
pass

class Atribute():
def __init__(self, atribb1, attrib2 = 60):
self.atribb1 = atribb1
self.attrib2 = attrib2
pass

class Class1(Class):
def __init__(self, one):
super().__init__(one)
self.attribute = Atribute()
def descr(self):
print(self.attribute)

Class1.descr()

Просто когда я пишу так, мне Питон выдает ошибку...
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте с помощью ... -> код -> python.
Ошибка возникает потому, что в коде вы определили метод descr как метод экземпляра класса, а потом вызываете его как метод класса. Нужно создать экземпляр класса и вызвать метод у экземпляра. Вот пример:
Python:
class Class():
    def __init__(self, one):
        self.one = one


class Atribute():
    def __init__(self, atribb1, attrib2=60):
        self.atribb1 = atribb1
        self.attrib2 = attrib2


class Class1(Class):
    def __init__(self, one):
        super().__init__(one)
        self.attribute = Atribute(one)

    def descr(self):
        print(self.attribute)


x = Class1(5)
x.descr()
 
  • Мне нравится
Реакции: Student

Форум IT Специалистов