定义两个类时,一个使用__dict__实现(A),另一个使用__slots__实现(B)。如何在Python中使用__slots__获取实例属性名称值
有没有一种巧妙的方法来获取__slots__类的实例属性名称和值,就像我在__dict__类中使用vars()函数一样?
class A(object):
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
class B(object):
__slots__ = ('x', 'y', 'z')
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
vars(A(1, 2, 3)) # {'y': 2, 'x': 1, 'z': 3}
vars(B(1, 2, 3)) # TypeError: vars() argument must have __dict__ attribute
使用与检查.__ slots__中或目录()将只返回属性的名称,而不值
B(1, 2, 3).__slots__ # ('x', 'y', 'z')
您可以使用'getattr'通过属性的名称获取属性的值作为字符串。 – user2357112