2016-02-03 3 views
1

Я пытаюсь создать оператор 'switch', используя метод словаря. Я могу сделать это без классов, но с классами я не могу заставить его работать независимо от того, какого типа заклинания я стараюсь.Python: переменная словаря в классах

#!/usr/bin/python3 

import numpy as np 
import sys 

def func1(var1): 
    print("hi guy") 
    return 0 

Mycode = { 5:func1 } 

indx1 = 5 
var1 = 0 
temp = Mycode[indx1] 
temp(var1) 
sys.exit() 

The above code works. 
The code below does not work 

#!/usr/bin/python3 

import numpy as np 
import sys 

class Beef(): 

    def __init__(self): 
     junk = 3 

    def func1(self, var1): 
     print("hi guy") 
     return 0 

    def find(self): 
     self.Mycode = { 5:func1 } 
     self.run() 

    def run(self): 
     indx1 = 5 
     var1 = 0 
     temp = self.Mycode[indx1] 
     errcode = temp(0) 
     sys.exit() 


hvfbeef = Beef() 
hvfbeef.find() 

Я получаю ошибку «NameError: название„func1“не определен», хотя на других перестановок я получаю другие ошибки. Кажется, я не понимаю, как словарь работает в рамках классов и функций. Любая помощь будет оценена по достоинству.

ответ

1
self.Mycode = { 5:self.func1 } 

        ^^^^ 

Это должно быть self.

Кроме того,

temp = self.Mycode[indx1] 

     ^^^^ 
+0

благодарственные очень много! – user3822607

+0

@ user3822607 действительно согласен, если он сработал для u – vks

Смежные вопросы