我尝试在 python 中创建一个类(使用 XSI/Softimage)来覆盖默认方法。
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)
但如您所见,我重复了很多。我怎样才能简化这个?也许用元类?
最佳答案
这里不需要元类。你可以这样做:
def make_xsi_property(name):
def get_prop(self):
return xsi.getValue('{}.{}'.format(self.object, name))
def set_prop(self, value):
tx = xsi.setValue('{}.{}'.format(self.object, name), value)
return property(get_prop, set_prop)
class MyClass(object):
tx = make_xsi_property('kine.local.posx')
ty = make_xsi_property('kine.local.posy')
#...
关于python - 关于 Python 中的元类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11375702/