能否在类B中调用其属性类A实例的submethod以打印B的所有属性?
问题解答:调用类方法打印另一类实例属性是否可行?
你的代码是可行的。当执行classBInstance.submethod()时,B的submethod会调用A实例的submethod,并把B自身的实例对象传进去。A的submethod里的dir(argumentThatWillBeAClass)会打印出该B实例的所有属性和方法,包括从object类继承来的内置属性(比如__init__、__str__这类)。
举个实际运行的例子,执行你的代码后调用classBInstance.submethod(),输出里会包含classAInstance、submethod以及一堆双下划线开头的内置属性。
如果你的需求是只打印B实例自定义的属性(排除内置属性),可以修改A的submethod,过滤掉以双下划线__开头的属性,代码如下:
class A: def __init__(self, argument): self.value = argument def submethod(self, instance): # 筛选出非内置的自定义属性 custom_attributes = [attr for attr in dir(instance) if not attr.startswith('__')] print(custom_attributes)
修改后再调用classBInstance.submethod(),输出就会是['classAInstance', 'submethod'],更贴合你想要的“B的所有属性”的预期。
内容的提问来源于stack exchange,提问作者Bituvo
相关产品推荐
相关产品推荐

