私は次のようなクラスを持っています:
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)が機能するようにする方法はありますか?
ありがとう