Здравствуйте.
Есть класс Библиотека и класс Книга.
Нужно чтобы программа работала так:
lib = Library(1, ’51 Some str., NY’)
lib += Book(‘Leo Tolstoi’, ‘War and Peace’)
В классе Библиотеки создал массив books для хранения книг, перегрузил оператор +=, чтобы в этот массив добавлялись объекты. Но после вызова оператора теряется доступ к этой переменной (выдает ошибку на lib.books). Хотя вызова доступ есть.
Вот код программы:
class Book(object):
def __init__(self, name, author):
if name == "":
raise "Book name mustn't be empty"
self._name = name
self._autor = author
self._code = 0
@property
def name(self):
return self._name
@property
def autor(self):
return self._autor
def tag(self):
return [word for word in self._name.split(' ') if word[:1].isupper()]
def __iter__(self):
yield [self._code, self._name, self._autor]
def __str__(self):
return "[{0}] {1} {2}".format(self._code, self._autor, self._name)
class Library(object):
def __init__(self, address, number):
self._address = address
self._number = number
self._books = []
@property
def address(self):
return self._address
@property
def number(self):
return self._number
@property
def books(self):
return self._books
def __iadd__(self, book):
self._books.append(book)
# print(book.tag())
def __iter__(self):
yield self._books
И main.py:
from book import Book
from library import Library
book = Book('War and Peace', 'Tolstoi')
lib = Library(1, '51 Some str., NY')
print(book.name)
print(book.autor)
print(book.tag())
print(book)
print(lib.books) # => []
lib += book
print(lib.books) # => AttributeError: 'NoneType' object has no attribute 'books'
Заранее спасибо!