'xxx' オブジェクトには属性 'xxx' がなく、'xxx' は 2 つの位置引数を受け取りますが、3 つにエラーの理由が与えられました

私は一晩で 2 つのよくある間違いに遭遇したので、それらを共有したいと思います。

属性エラー: 'xxx' オブジェクトには属性 'xxx' がありません

定義されていますが、コードは依然として失敗します。
理由 1: Int () の二重下線は無視されます (__ で二重下線が使用されている場合は紫色になりますが、これは正しいです)
ここに画像の説明を挿入します
理由 2: パスに中国語が含まれています。

TypeError: xxx は 2 つの位置引数を取りますが、3 つが指定されました

理由: パラメータの受け渡しの問題。注: self は作成されたクラス インスタンス自体を表すため、さまざまなプロパティを内部的に self にバインドできます。インスタンスを作成するときは、空のパラメーターを渡すことはできません。メソッドに一致するパラメーターを渡す必要があります。ただし、self を渡す必要はないことに注意してください。Python インタープリターはインスタンス変数自体を渡します。

エラーのデモンストレーション:

class ABC:
...
    def channel(self, x):
    	b, c, h, w = x.shape 
        x = x.reshape(b, 2, -1, h, w)
        return x
	
	def forward(self, x):
		...
		out = self.channel(out, 2)#传了2个参数,报错!
		return

正しいデモンストレーション:

class ABC:
...
    def channel(self, x, group):
    	b, c, h, w = x.shape 
        x = x.reshape(b, group, -1, h, w)
        return x
	
	def forward(self, x):
		...
		out = self.channel(out, 2)#传了2个参数,x=out,group=2
		return

または

class ABC:
...
    def channel(self, x, group=2):
    	b, c, h, w = x.shape 
        x = x.reshape(b, group, -1, h, w)
        return x
	
	def forward(self, x):
		...
		out = self.channel(out)#传了1个参数,x=out
		return

おすすめ

転載: blog.csdn.net/LZL2020LZL/article/details/131689328