我想从其基类访问类字段中的值。怎么做?看看我的代码:
class MyBase(object):
def p(self):
members = [attr for attr in dir(self) if not callable(getattr(self, attr)) and not attr.startswith("__")]
print members
class UserTest(MyBase):
def __init__(self, name='', family='', age=''):
self.name = name
self.family = family
self.age = age
a = UserTest(name='ehsan', family='shirzadi', age=29)
a.p()
使用上面的代码,我可以在执行a.p()后看到变量名,但是如何查看它们的值?请注意我不知道字段的名称,所以我不能在基类中使用self.name
答案 0 :(得分:2)
在callable(getattr(self, attr))
中执行MyBase.p
时,您已获得一次该值。您可以使用相同的方法获取输出值:
class MyBase(object):
def p(self):
print [(attr, getattr(self, attr)) for attr in dir(self)
if not callable(getattr(self, attr)) and not attr.startswith('__')]
class MyBase(object):
def p(self):
print [(attr, value) for attr, value in vars(self).items()
if not callable(value) and not attr.startswith('__')]
两者都产生如下结果:
[('age', 29), ('name', 'ehsan'), ('family', 'shirzadi')]
事实上,vars
会为您提供一个词典,其中包含一些不需要的成员已被忽略:
class MyBase(object):
def p(self):
print vars(self)
或只是:
a = UserTest(name='ehsan', family='shirzadi', age=29)
print vars(a)
的产率:
{'age': 29, 'name': 'ehsan', 'family': 'shirzadi'}
答案 1 :(得分:1)
这应该有效:
class MyBase(object):
def p(self):
print vars(self)