2015-04-14 116 views
1

我想在一个Enigma机器中旋转转子的类中创建一个函数。然而,当我试图告诉它使用它不接受它,如下面的代码展示了其转子:类功能不接受自己。变量

from collections import deque 

class Rotors: 
    def __init__(self): 
     self.a = deque("ABCDEFGHIJKLMNOPQRSTUVWXYZ") 
     self.vi = deque("JPGVOUMFYQBENHZRDKASXLICTW") 
     self.vii = deque("NZJHGRCXMYSWBOUFAIVLPEKQDT")   
     self.viii = deque("FKQHTLXOCBJSPDZRAMEWNIUYGV") 
     self.rotor_vi = [self.a, self.vi] 
     self.rotor_vii = [self.a, self.vii] 
     self.rotor_viii = [self.a, self.viii] 
     self.rotors = [self.rotor_vi, self.rotor_vii, self.rotor_viii] 
     self.reflector = deque("FVPJIAOYEDRZXWGCTKUQSBNMHL") 


    def rotate_rotor(self, rotor): 
     rotor.rotate(1) 

x = Rotors() 
x.rotate_rotor(self.vi) 

其中给出的输出:

Traceback (most recent call last): 
    File "C:\Users\Aaron\Documents\Programs\Enigma.py", line 20, in <module> 
    x.rotate_rotor(self.vi) 
NameError: name 'self' is not defined 
[Finished in 0.1s] 
+3

'self' does not exist ** outside ** the class methods ... – jonrsharpe

回答

4
x.rotate_rotor(self.vi) 

应:

x.rotate_rotor(x.vi) 
+0

Thanks!谢谢!我知道这会是如此简单的事情...... – Aaron165