2017-08-22 9 views
1

このコードに問題があります。目標は、ユーザーが入力を逆にして入力するメッセージを「暗号化する」ことです。レッスンはもともとコードの機能ブロックとして書かれていましたが、私はオブジェクト指向プログラミングに変換していましたが、今はエラーが発生します。このコードに他の問題がある場合は教えてください。属性を同じクラスの関数に渡すにはどうすればよいですか?

クラスインスタンス属性このコード

class Encrypt: 
    def __init__(self,message,translated): 
     self.message = message # user input 
     self.translated = translated # encrypted result 

    def encryptionProcess(self,message): # encrypting functino 
     i = len(message) - 1 
     while i >= 0: 
      self.translated = self.translated + self.message[i] 
      i = i - 1 

m1 = Encrypt(input(),'') # setting the class attributes 
m1.encryptionProcess(message) # calling the function 
print(Encrypt.translated) # printing the result 

でこのエラーである

Traceback (most recent call last): 
    File "oopEncrypt.py", line 13, in <module> 
    m1.encryptionProcess(message) 
NameError: name 'message' is not defined 

答えて

0

へのアクセスは、クラスインスタンスメソッドの最初のパラメータとして渡さselfパラメータを用いて行われます。

これを試してみてください:

class Encrypt: 

    def __init__(self, message): 
     self.message = message # user input 

    def encryptionProcess(self): # encrypting functin 
     translated = "".join(reversed(self.message)) 
     return translated 

m1 = Encrypt(input("Enter word to encrypt > ")) 
translated = m1.encryptionProcess() 
print("Encrypted Word:", translated) 

selfは現在のクラスのインスタンスです。

あなたはpython 3クラスのドキュメントが役に立つリファレンスを見つけるかもしれません:https://docs.python.org/3.6/tutorial/classes.html

関連する問題