Is it possible to have a static property on a class that would be computed as a one off. The idea would be to be able to do it like so:
static_prop = Foo.one_off_static_method()
cls.static_prop = ... do everything here
If you want it computed at class definition time, see chepner's answer - although I would recommend just to use a module level function instead.
If you want it lazily evaluated, then you might be interested in a
>>> from random import random >>> from cached_property import cached_property >>> class Foo(object): ... @cached_property ... def one_off_thing(self): ... print('computing...') ... return random() ... >>> foo = Foo() >>> foo.one_off_thing computing... 0.5804382038855782 >>> foo.one_off_thing 0.5804382038855782
Note: it seems every man and his dog has an implementation of memo decorators in Python, this is one of many. If you're on Python 3, consider functools.lru_cache because it's in the core libraries.