Он не показывает мне атрибуты суперкласса:
>>> class A(object):
def a(self):
print a
b = 3
>>> a = A()
>>> dir(a)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a', 'b']
>>> list(a.__class__.__dict__)
['a', '__module__', 'b', '__dict__', '__weakref__', '__doc__']
__module__
, __dict__
, __weakref__
, __doc__
кажутся атрибутами, созданными для каждого класса по умолчанию.
Этот список атрибутов по умолчанию отличается для классов старого стиля:
>>> class B:
pass
>>> list(B().__class__.__dict__)
['__module__', '__doc__']
Кстати, вот как различные функции plyr
соответствуют базовым * применяемым
функциям (из Введение в документ plyr с веб-страницы plyr http://had.co.nz/plyr/ )
Base function Input Output plyr function
---------------------------------------
aggregate d d ddply + colwise
apply a a/l aaply / alply
by d l dlply
lapply l l llply
mapply a a/l maply / mlply
replicate r a/l raply / rlply
sapply l a laply
Одна из целей plyr
- обеспечить согласованные соглашения об именах для каждого функций, кодируя типы входных и выходных данных в имени функции. Он также обеспечивает согласованность вывода, так как вывод из dlply ()
легко передается в ldply ()
для получения полезного вывода и т. Д.
Концептуально, обучение plyr
не сложнее, чем понимание базовых * применяемых
функций. Функции
plyr
и reshape
заменили почти все эти функции в моем повседневном использовании. Но также из документа Intro to Plyr:
Связанные функции
tapply
иsweep
не имеют соответствующей функции вplyr
и остаются полезными.merge
полезен для объединения сводок с исходными данными.