これは、あなたの人が誰であるかを知るための方法があることを前提としています。あなたが人のリストを持っていて、「ボブ」を探したいとしましょう。
a = person('anne', 'female')
b = person('bob', 'male')
c = person('cathy', 'female')
people = [a, b, c]
ここで、名前が「ボブ」かどうかを確認することができます。
maybe_bob = [pers for pers in people if pers.name == 'bob']
'bob'が存在する場合、リスト内の最初の項目を呼び出すことでオブジェクトにアクセスできます。
try:
bob = maybe_bob[0]
except IndexError:
print "No one named 'bob'."
もちろん、ウィム氏のように、あなたのリストに「ボブ」という名前の人が複数いると、これは壊れてしまいます。 test.pyであなたの例を使用して
import inspect
import importlib
import ast
class FindAttr(ast.NodeVisitor):
def __init__(self, name):
self.name = name
self.b = None
def visit_Assign(self, node):
for t in node.targets:
if isinstance(t, ast.Attribute) and hasattr(node.value, "s"):
if node.value.s == self.name:
self.b = (getattr(mod,t.value.id))
return
mod = "test"
mod = importlib.import_module(mod)
p = ast.parse(inspect.getsource(mod))
f = FindAttr("bob")
f.visit(p)
:ボブ以来
あなたの目的は?これは、おそらくあなたが望むものを達成する最も簡単な方法ではありません。 – zondo
'PersonFinder'クラスを作成できましたか?詳細情報が必要 – jeremy
文字列を指定してオブジェクトを取得できるようにするには、辞書を使用して文字列をオブジェクトにマップするだけで済みます。 –