電子書籍の厳選無料作品が豊富!

Pythonのクラスへの引数の渡し方についてです。
Pytorchの勉強をしているのですが、以下のような場合
class Net(nn.Mudule):
self.__init__(self):


self.foward(x):


のようなクラスを作成し、
net=Net()の様にインスタンス化をしたあと
y_pred=net(x)だけでforwardに引数が渡せるのは、forwardの他には関数がないからですか?他に関数がある場合は
y_pred=net.forward(x)と書かなくてはいけないのでしょうか?

こういった場面での引数の渡し方について教えていただけるとありがたいです。よろしくおねがいします。

A 回答 (2件)

クラスに x 渡したいなら



def __init_(self, x):
:
:

とコンストラクタを定義するべきだし。

forwardメソッドに x 渡したいなら
def forward(self, x):
:
:

とメソッドを定義すべき。

あなたのコードでは Syntax Error になるはずだけど
試してない?
    • good
    • 0

何を訊きたいのか明快じゃないんですが、字面通りに受け取ると、



>以下のような場合
>class Net(nn.Mudule):
>self.__init__(self):
>略

>self.foward(x):
>略

>のようなクラスを作成

クラス作成定義が既に間違っています。
クラス作成は

class Net(nn.Mudule):
 def __init__(self):
 略

 def foward(x):
 略

と言うような形式です。

>net=Net()の様にインスタンス化をしたあと
>y_pred=net(x)だけでforwardに引数が渡せる

渡せません。
上のような形式でもクラス内で定義されたメソッドは、常に第一引数は作成されたオブジェクト自身を指します。
つまりメソッドfowardは実は

def foward(self, x):
 略

と定義しないと外部から引数xは渡せないのです。

> 他に関数がある場合は
> y_pred=net.forward(x)と書かなくてはいけないのでしょうか?

まず用語から。
クラス内で定義された「関数のようなもの」はメソッド、と呼びます。
メソッド呼び出しは貴方が言うように

y_pred=net.forward(x)

と書くのがお約束です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!