Нет никакой "стоимости производительности" hasattr
, которая имеет значение. Это достаточно быстро, чтобы вам было трудно его измерить.
Пожалуйста, не используйте __
(двойное подчеркивание) для своих собственных атрибутов. Это смущает остальных из нас.
Обычно для такого рода вещей лучше использовать членство collections
Abstract Base Class.
if isinstance( arg, collections.Sequence ):
self._some_var = list(arg)
else:
self._some_var.append( arg )
Это дает вам кое-что, что, вероятно, будет работать лучше, потому что оно выражает семантику немного яснее.