Простой Python. Современный стиль программирования (Любанович) - страница 275

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