定義兩個類時,一個使用__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