我上的课如下:
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
在后面的一段代码中,我使用了一个volume函数,如下所示:
^{pr2}$vol函数与我在类中定义的@property完全相同。为了让这段代码正常工作,我不得不复制并粘贴class@property,并将其转换为一个常规函数,如下所示:
def vol(a,b):
return (4*np.pi/3) * a * a * b
我总是被告知,复制和粘贴代码是我做错了什么的标志。所以我的问题是,有没有一种方法可以重新设计我的类,这样我就可以调用在那个球体类中定义的volume@property/method,而不用创建实例,这样Z=vol(X,Y)就可以工作了?在
谢谢
如果您的目标是使vol(x,y)正常工作,那么可以定义vol来创建一个新对象,使用传递给它的参数,调用该属性,然后返回。在
或者你可以在你的spheroid类上创建一个名为Vol的函数,并使该函数成为静态的。然后你可以让这个函数的实例版本调用静态版本。在
我会遵循scott_fakename的建议,使用如下静态方法:
相关问题 更多 >
编程相关推荐