要实现报告生成器只显示对象的名称而不是它们的内容,可以使用Python的反射机制来获取对象的名称。
下面是一个示例代码:
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_gender(self):
return self.gender
def generate_report(obj):
report = ""
for attr_name in dir(obj):
attr_value = getattr(obj, attr_name)
if not callable(attr_value) and not attr_name.startswith('__'):
report += f"{attr_name}: {attr_value}\n"
return report
person = Person("John Doe", 30, "male")
report = generate_report(person)
print(report)
运行以上代码,会生成以下报告:
age: 30
gender: male
name: John Doe
在这个示例中,Person
类表示一个人,具有名称、年龄和性别属性。generate_report
函数接受一个对象作为参数,使用dir
函数获取对象的所有属性和方法的名称。然后,使用getattr
函数获取对象的属性值。如果属性值不是可调用的(即不是方法)且不是以双下划线开头的特殊属性,则将属性名称和属性值添加到报告中。
这样,生成的报告将只包含对象的属性名称和对应的属性值,而不会显示属性的内容。
下一篇:报告生成器只显示一行