Различия между версиями 1 и 2
Версия 1 от 2017-11-19 17:52:07
Размер: 1514
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2017-11-19 17:54:12
Размер: 1622
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 24: Строка 24:
Почему так? Потому что в нашем объекте, помимо четырёх заданных нами полей (`var`, `res`, `__init__()` и `fun()`, имеются ещё 24 спецполя, созданные Python-ом (из них 20 — callable). Вот полный список: `Var __class__() __delattr__() __dict__ __dir__() __doc__ __eq__() __format__() __ge__() __getattribute__() __gt__() __hash__() __init__() __le__() __lt__() __module__ __ne__() __new__() __reduce__() __reduce_ex__() __repr__() __setattr__() __sizeof__() __str__() __subclasshook__() __weakref__ fun() res`. Почему так? Потому что в нашем объекте, помимо четырёх заданных нами полей (`var`, `res`, `__init__()` и `fun()`, имеются ещё 24 спецполя, созданные Python-ом (из них 20 — callable). Вот полный список: `Var`, `__class__()`, `__delattr__()`, `__dict__`, `__dir__()`, `__doc__`, `__eq__()`, `__format__()`, `__ge__()`, `__getattribute__()`, `__gt__()`, `__hash__()`, `__init__()`, `__le__()`, `__lt__()`, `__module__`, `__ne__()`, `__new__()`, `__reduce__()`, `__reduce_ex__()`, `__repr__()`, `__setattr__()`, `__sizeof__()`, `__str__()`, `__subclasshook__()`, `__weakref__`, `fun()`, `res`.

Написать фрагмент программы (функцию) fields(obj), которая будет подсчитывать, сколько всего полей в объекте obj, и сколько из них — «методы» (точнее говоря, сколько из них можно вызвать как функцию. fields возвращает кортеж из указанных двух значений.

Для решения понадобятся функции dir(), getattr() и callable() (см. документацию

   1 class C:
   2     def __init__(self, var, res):
   3         self.Var, self.res = var, res
   4 
   5     def fun(self):
   6         return self.var + self.res
   7 
   8 c = C(1,2)
   9 print(fields(c))

(28, 22)

Почему так? Потому что в нашем объекте, помимо четырёх заданных нами полей (var, res, __init__() и fun(), имеются ещё 24 спецполя, созданные Python-ом (из них 20 — callable). Вот полный список: Var, __class__(), __delattr__(), __dict__, __dir__(), __doc__, __eq__(), __format__(), __ge__(), __getattribute__(), __gt__(), __hash__(), __init__(), __le__(), __lt__(), __module__, __ne__(), __new__(), __reduce__(), __reduce_ex__(), __repr__(), __setattr__(), __sizeof__(), __str__(), __subclasshook__(), __weakref__, fun(), res.


CategoryHomework

LecturesCMC/PythonIntro2017/Homework_FieldsCount (последним исправлял пользователь FrBrGeorge 2017-11-19 17:54:12)