1

evalPython で使用するのは良い習慣ではないことをよく知っています。これが私のコードです:

from hashlib import * # added for clarification
def get_hash(self):
        if self.hash_type in ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512']:
            data = eval(self.hash_type) # <--- how can I replace this?

機能については聞いたことがありsetattrますが、正直なところ、実装方法がわかりません。

map関数を使用してこれを行うことも可能ですか?

'md5', 'sha1', 'sha224'etc はローカル変数であることに注意してください。それらの1つで関数を使用しているときeval、それらは関数になります。

4

2 に答える 2

3

すべての情報を辞書に保存してみませんか? 例えば:

self.hash_types = {
    'md5': md5,
    'sha1': sha1,
    ...
}

次にget_hash

def get_hash(self):
    if self.hash_type in self.hash_types:
        data = self.hash_types[self.hash_type]

あるいは、

def get_hash(self):
    data = self.hash_types.get(self.hash_type, self.DEFAULT)
于 2014-03-03T19:58:04.543 に答える