Wie man die Eigenschaft einer Klasse?

In python kann ich hinzufügen, eine Methode zu einer Klasse mit der @classmethod Dekorateur. Gibt es ein ähnliches Dekorator hinzufügen, um eine Eigenschaft zu einer Klasse? Ich kann besser zeigen, was ich bin reden über.

class Example(object):
   the_I = 10
   def __init__( self ):
      self.an_i = 20

   @property
   def i( self ):
      return self.an_i

   def inc_i( self ):
      self.an_i += 1

   # is this even possible?
   @classproperty
   def I( cls ):
      return cls.the_I

   @classmethod
   def inc_I( cls ):
      cls.the_I += 1

e = Example()
assert e.i == 20
e.inc_i()
assert e.i == 21

assert Example.I == 10
Example.inc_I()
assert Example.I == 11

Ist die syntax, die ich verwendet habe, oben möglich oder würde es erfordern etwas mehr?

Dem Grund will ich die Klasse von Eigenschaften ist, so kann ich lazy load class-Attribute, die scheint vernünftig genug.

Ich weiß nicht, python... ist das die Art von Sachen, die du suchst ? python.org/download/releases/2.2/descrintro/#property
wenn ich lese, dass die Rechte, die Sie erstellen können Methoden zu handeln, wie die setter und getter (wie in anderen Sprachen), so können Sie faul Belastung der Wert der Eigenschaft auf den ersten zu bekommen... ich denke, das ist, was Sie wollten?
Dragon. Die property-Funktion, die Sie suchen, fügt die Eigenschaften zu Instanzen der Klasse, nicht die Klassen selbst. Ich Frage nach Example.I nicht e.i.
Hier die Lösung zum erstellen von Klassen-Eigenschaft in einem anderen Thema: stackoverflow.com/a/35640842/1113207
Dupe: Mit der Eigenschaft() auf classmethods

InformationsquelleAutor deft_code | 2011-03-04

Schreibe einen Kommentar