J'essaie d'exécuter un simple script python, mais j'ai en quelque sorte cette erreur:

AttributeError: 'Script' object has no attribute 'run'

Mon code ressemble à ceci:

class Script(object):
  def __init__(self, data1, data2, data3):
     self.data1 = data1
     self.data2 = data2
     self.data3 = data3

     def getData1(self):
         return self.data1

     def getData2(self):
         return self.data2

     def getData3(self):
         return self.data3

     def run(self):
         return 'Running successfully'

 script1 = Script('data1', 'data2', 'data3')
 print script1.run()

Ce serait génial si quelqu'un pouvait m'aider :)

0
Shan Ratnam 23 mai 2018 à 18:43

3 réponses

Meilleure réponse

Votre run () et les autres méthodes () sont définies sous init () identification Essaye ça:-

class Script(object):
    def __init__(self, data1, data2, data3):
        self.data1 = data1
        self.data2 = data2
        self.data3 = data3

    def getData1(self):
        return self.data1

    def getData2(self):
        return self.data2

    def getData3(self):
        return self.data3

    def run(self):
        return 'Running successfully'

script1 = Script('data1', 'data2', 'data3')
print script1.run()
1
nandal 23 mai 2018 à 15:49

D'après la façon dont le code est formaté dans votre question, il semble que toutes les fonctions getData1, getData2, getData3 et run sont des fermetures de la méthode __init__, pas les méthodes de la classe elles-mêmes. Cela signifie qu'ils ne sont pas des méthodes de l'instance d'objet et ne sont donc pas accessibles de l'extérieur __init__.

Vous pouvez reformater le code pour ressembler à ceci à la place

class Script(object):
    def __init__(self, data1, data2, data3):
        self.data1 = data1
        self.data2 = data2
        self.data3 = data3

    def getData1(self):
        return self.data1

    def getData2(self):
        return self.data2

    def getData3(self):
        return self.data3

    def run(self):
        return 'Running successfully'

script1 = Script('data1', 'data2', 'data3')
print script1.run()

Qui fera toutes les fonctions mentionnées ci-dessus des méthodes de la classe.

1
Marco Selvi 23 mai 2018 à 15:51

Dès le premier coup d'œil, vous devez corriger l'indentation sur la deuxième ligne.

0
ByiProX 23 mai 2018 à 15:53