【发布时间】:2019-03-24 15:36:05
【问题描述】:
我有以下代码:
import numpy as np
class Basis(object):
def __init__(self, dimension):
self.dimension = dimension
def coord(self, c):
if self.dimension <= 2:
return c
else:
return c + [0]*(self.dimension-2)
@property
def zerocoord(self):
return self.coord([0,0])
@property
def Dcoord(self):
return self.coord([1,0])
@property
def Tcoord(self):
return self.coord([0,1])
@property
def Xcoord(self):
return self.coord([1./np.sqrt(2), 1./np.sqrt(2)])
@property
def Ycoord(self):
return self.coord([-1./np.sqrt(2), 1./np.sqrt(2)])
这里所有的属性基本上每个属性都在调用相同的方法coord。这是因为我提供的实际数组 coord、[0,0], [1,0], [0,1] 等是固定的,但可能会根据实例属性 dimension 进行扩展。
我对 Python 有点陌生,但直觉上(也许是天真地)我认为这可以写成一个包装器......所以类似于:
@property
def coord(self)
和
@coord
def Dcoord(self)
这会使代码更优雅。
有人可以帮帮我吗?
【问题讨论】:
-
您想将
property别名为coord?只需在您的类定义之前添加coord = property。否则,这是没有意义的,因为这些函数中的每一个都获得了与self.coord不同的东西,所以你不能有一个通用的包装器。
标签: python wrapper python-decorators