Как получить доступ к методам и свойствам родительского класса из дочернего класса?

Как правильно изменить код класса Book, чтобы он корректно ссылался на полку, на которой стоит книга, с учетом особенностей наследования в данном контексте?
  • 18 апреля 2024 г. 21:40
Ответы на вопрос 2
Для доступа к методам и свойствам родительского класса из дочернего класса можно использовать ключевое слово `super()`. 

Пример:

```python
class Parent:
    def __init__(self):
        self.parent_property = "Parent Property"
    
    def parent_method(self):
        print("Parent Method")

class Child(Parent):
    def __init__(self):
        super().__init__()
    
    def child_method(self):
        super().parent_method()
        print("Child Method")

child = Child()
child.child_method()
print(child.parent_property)
```

Чтобы корректно изменить код класса `Book`, чтобы он корректно ссылался на полку, на которой стоит книга, нужно использовать ключевое слово `super()` в методе `__init__` дочернего класса `Book`, чтобы вызвать конструктор родительского класса `LibraryItem`.

Пример:

```python
class LibraryItem:
    def __init__(self, shelf):
        self.shelf = shelf

class Book(LibraryItem):
    def __init__(self, shelf, title):
        super().__init__(shelf)
        self.title = title

shelf_number = 1
book_title = "Harry Potter"
book = Book(shelf_number, book_title)
print(book.shelf)
``` 

В этом примере при создании объекта класса `Book` передается номер полки и название книги, при этом вызывается конструктор родительского класса `LibraryItem`.
как родился такой код? 
book.shelf = super(BookShelfRef,shelf)

вместо book.shelf = shelf

И вообще ты работает с методами списков append, когда на самом деле все сложнее и нужно описать свои методы работы у классов.
Похожие вопросы