Написать фрагмент программы (функцию) 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)