... 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