Два небольших дополнительных очка.
Во-первых, self.__class__.l.append(1)
не очень разумно.
Просто скажи self.l.append(1)
. Python ищет экземпляр до того, как он ищет в классе ссылку.
Что более важно, переменные уровня класса редко бывают полезны. Константы уровня класса иногда разумны, но даже тогда их трудно оправдать.
В C ++ и Java переменные уровня класса ('static
') кажутся полезными, но не имеют большого значения. Их трудно научить n00bz - часто тратить много учебного времени на мелочи - и они не очень практичны. Если вы хотите знать все экземпляры X, которые были созданы, вероятно, лучше создать класс XFactory, который не зависит от переменных класса.
class XFactory( object ):
def __init__( self ):
self.listOfX= []
def makeX( self, *args, **kw ):
newX= X(*args,**kw)
self.listOfX.append(newX)
return newX
Никаких аномалий на уровне класса. И это не связывает X с коллекцией X. В конечном счете, меня смущает, когда класс - это нечто, а также набор вещей.
Проще лучше, чем Комплекс.