class - About metaclass in Python -
i try make class in python (with xsi / softimage) override default methods.
class transform(object): def __init__ (self) : self.object = self._build() self.type = '' def _build (self): object = none return object @property def name(self): name = xsi.getvalue(str(self.object) + '.name') return str(name) @name.setter def name(self, value): name = xsi.setvalue(str(self.object) + '.name', value) self.object = str(name) ################## translate ###################### @property def tx(self): tx = xsi.getvalue(str(self.object) + '.kine.local.posx') return tx @tx.setter def tx(self, value): tx = xsi.setvalue(str(self.object) + '.kine.local.posx', value) @property def ty(self): ty = xsi.getvalue(str(self.object) + '.kine.local.posy') return ty @ty.setter def ty(self, value): ty = xsi.setvalue(str(self.object) + '.kine.local.posy', value) @property def tz(self): tz = xsi.getvalue(str(self.object) + '.kine.local.posz') return tz @tz.setter def tz(self, value): tz = xsi.setvalue(str(self.object) + '.kine.local.posz', value)
but can see duplicate lot. how can simplify ? maybe metaclass ?
the property
type 1 (handy) shortcut descriptors. case, simplest solution custom descriptor, ie:
class xsidescriptor(object): def __init__(self, xsi): self.xsi = xsi def __get__(self, instance, cls=none): if instance none: return self key = "%s.%s" % (instance.object, self.xsi) return xsi.getvalue(key) def __set__(self, instance, value): key = "%s.%s" % (instance.object, self.xsi) xsi.setvalue(key, value) class transform(object): # init etc here tx = xsidescriptor("kine.local.posx") ty = xsidescriptor("kine.local.posy") # etc
Comments
Post a Comment