Python での動的属性設定で 'eval' を使用することが危険である理由
Python では、'eval' 関数を使用して以下を実行できます。 Python コードとしての文字列。クラス内で属性を動的に設定する場合には便利に見えるかもしれませんが、「eval」の使用は一般的に悪い習慣であると考えられています。
「eval」を使用するリスク
代替解決策: 'setattr' を使用する
「setattr」関数は、より安全かつ効率的に設定する方法を提供します。属性を動的に設定します。 3 つの引数を取ります:
たとえば、次のコードは 'setattr' を使用して、 'Song' クラス:
class Song: attsToStore = ('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: setattr(self, att.lower(), None) def set_detail(self, key, val): if key in self.attsToStore: setattr(self, key.lower(), val)
結論
'eval' は属性を動的に設定する便利な方法であるように見えますが、重大なリスクを引き起こすため、そうすべきです。 「setattr」のような、より安全で効率的な代替手段を優先して回避されます。
以上がPython で動的属性設定に `eval()` を使用するのはなぜ危険ですか? より安全な代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。