>xyz
4. Создайте класс, который называется Element, имеющий атрибуты объекта name, symbol и number. Создайте объект этого класса со значениями 'Hydrogen', 'H' и 1:
>>>> class Element:
>…·····def __init__(self, name, symbol, number):
>…·········self.name = name
>…·········self.symbol = symbol
>…·········self.number = number
>…
>>>> hydrogen = Element('Hydrogen', 'H', 1)
5. Создайте словарь со следующими ключами и значениями: 'name': 'Hydrogen', 'symbol': 'H', 'number': 1. Далее создайте объект с именем hydrogen класса Element с помощью этого словаря.
Начнем со словаря:
>>>> el_dict = {'name': 'Hydrogen', 'symbol': 'H', 'number': 1}
Это работает, однако необходимо напечатать много текста:
>>>> hydrogen = Element(el_dict['name'], el_dict['symbol'], el_dict['number'])
Убедимся, что это работает:
>>>> hydrogen.name
>'Hydrogen'
Однако вы также можете инициализировать объект непосредственно с помощью словаря, поскольку его ключ names совпадает с аргументами функции __init__ (аргументы — ключевые слова рассматриваются в главе 3):
>>>> hydrogen = Element(**el_dict)
>>>> hydrogen.name
>'Hydrogen'
6. Для класса Element определите метод с именем dump(), который выводит на экран значения атрибутов объекта (name, symbol и number). Создайте объект hydrogen из этого нового определения и используйте метод dump(), чтобы вывести на экран его атрибуты:
>>>> class Element:
>…·····def __init__(self, name, symbol, number):
>…·········self.name = name
>…·········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
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>.