我有一堂课如下:
class Spheroid(object):
def __init__(self,shortt,longg):
self.shortax = shortt
self.longax = longg
self.alpha=self.longax/self.shortax
@property
def volume(self):
return (4*np.pi/3) * self.shortax * self.shortax * self.longax
在稍后的一段代码中,我使用了一个音量函数,如下所示:
x=np.arange(5,8.5,dx)
y=np.arange(5,30,dy)
X,Y = np.meshgrid(x,y)
Z = vol(X,Y)
vol 函数与我在课堂上定义的@property 完全相同。为了让这段代码正常工作,我必须复制并粘贴 @property 类并将其转换为如下常规函数:
def vol(a,b):
return (4*np.pi/3) * a * a * b
我总是被告知复制和粘贴代码是我做错了什么的标志。所以我的问题是,有没有一种方法可以重新设计我的类,以便在不创建实例的情况下调用我在该 Spheroid 类中定义的卷 @property / 方法,以便 Z = vol(X,Y) 可以工作?
谢谢