Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 345

... self.symbol = symbol

... self.number = number

... def dump(self):

... print('name=%s, symbol=%s, number=%s' %

... (self.name, self.symbol, self.number))

...

>>> hydrogen = Element(**el_dict)

>>> hydrogen.dump()

name=Hydrogen, symbol=H, number=1

Глава 6. Ой-ой-ой: объекты и классы

449

7. Вызовите функцию print(hydrogen). В определении класса Element измените имя

метода dump на __str__, создайте новый объект hydrogen и затем снова вызовите

метод print(hydrogen):

>>> print(hydrogen)

<__main__.Element object at 0x1006f5310>

>>> class Element:

... def __init__(self, name, symbol, number):

... self.name = name

... self.symbol = symbol

... self.number = number

... def __str__(self):

... return ('name=%s, symbol=%s, number=%s' %

... (self.name, self.symbol, self.number))

...

>>> hydrogen = Element(**el_dict)

>>> print(hydrogen)

name=Hydrogen, symbol=H, number=1

__str__() — это один из волшебных методов Python. Функция print вызывает

метод объекта __str__(), чтобы получить его строковое представление. Если

у объекта нет метода __str__(), он получает метод по умолчанию от его роди-

тельского класса Object, который возвращает строку наподобие <__main__.Element

object at 0x1006f5310>.

8. Модифицируйте класс Element, сделав атрибуты name, symbol и number закры-

тыми. Определите геттер, возвращающий значение атрибута, для каждого из

них:

>>> class Element:

... def __init__(self, name, symbol, number):

... self.__name = name

... self.__symbol = symbol

... self.__number = number

... @property

... def name(self):

... return self.__name

... @property

... def symbol(self):

... return self.__symbol

... @property

... def number(self):

... return self.__number