Il semble que le problème dans votre code est que vous essayez d'appeler le constructeur de la classe tensor
en utilisant simplement le nom de la classe (tensor
), plutôt que d'utiliser l'instance actuelle de la classe (self
). Cela peut causer des problèmes car le constructeur de la classe tensor
s'attend à recevoir un argument n
, mais sans l'instance actuelle de la classe, il ne sait pas quelles valeurs utiliser pour n
.
Une solution à ce problème consiste à modifier la méthode prod
pour qu'elle utilise l'instance actuelle de la classe tensor
pour créer une nouvelle instance de la classe tensor
avec la valeur de n
multipliée par sca
. Vous pouvez faire cela en utilisant le mot-clé self
pour faire référence à l'instance actuelle de la classe tensor
, comme ceci:
class tensor:
def __init__(self, n):
self.n = n
def prod(self, sca=1):
newa = tensor(self.n * sca)
return newa
Avec ce code, lorsque vous appelez la méthode prod
sur une instance de la classe tensor
, l'instance actuelle de la classe sera automatiquement passée à la méthode sous forme de self
, ce qui permettra à la méthode d'accéder à la valeur de n
pour cette instance spécifique et de créer une nouvelle instance avec n
multiplié par sca
.
Vous pouvez ensuite utiliser cette méthode comme ceci:
t = tensor(1)
new_t = t.prod(3)
print(new_t.n) # imprime 3
Dans cet exemple, nous créons une instance de la classe tensor
avec n
égal à 1
, puis appelons la méthode prod
sur cette instance avec sca
égal à 3
. La méthode prod
crée alors une nouvelle instance de la classe tensor
avec n
égal à 1 * 3 = 3
, que nous stockons dans la variable new_t
. Enfin, nous imprimons la valeur de n
de la nouvelle instance, qui devrait être 3
.