Python3使用反射迭代地调用类的成员



使用Python3,我试图调用包含is_has_的类的成员。它们的返回被硬编码为True

以下是我实现的内容,我不知道如何使用black_magic方法实际调用存储的成员。有人能帮忙吗?非常感谢。

import inspect
import unittest
class Foo:
def is_bar(self):
print(bar)
return True
def is_baz(self):
print(baz)
return True
class MyTest(unittest.TestCase):
def setUp(self):
self.object=Foo()
self.object_members=inspect.getmembers(self.object)
def test_assertions_when_typical(self):
self.assertEqual(True,True)
for member in self.object_members:
member_name, member_address = member        
if "is_" in member_name or "has_" in member_name:
result=black_magic(member)
self.assertEqual(result,True)
if __name__=='__main__':
unittest.main()

我用调用这个

python3 -m unittest test_python_reflection_minimal_example.py

您可以使用以下在本地工作的实现:

def black_magic(self, objectClass, member):
return getattr(objectClass, member[0])()

并使用CCD_ 5进行调用。

说明:member是一个包含方法名称和方法引用的元组。然后,我们使用这个名称并在self.object上调用该方法。

最新更新