如何在不使用vars()或dict的情况下获取类成员名称和值___

2024-04-30 01:07:23 发布

您现在位置:Python中文网/ 问答频道 /正文

当我的类不重写__slots__时,我可以获得类实例的所有成员的名称和值。例如:

class Animal(object):
    #__slots__ = ('legs','name','color','smell','age','kids')
    def __init__(self):
        self.legs = 2
        self.name = 'Dog'
        self.color= 'Spotted'
        self.smell= 'Alot'
        self.age  = 10
        self.kids = 0

a = Animal()

for x in vars(a).items():
    print(x[0],x[1])

输出为

age 10
legs 2
name Dog
kids 0
smell Alot
color Spotted

但是,如果我取消对上面代码中的__slots__ = ...行的注释并运行它,我将得到一个错误,即vars() argument must have __dict__ attribute

__slots__被重写时,我是否可以得到所有成员的名称和值


Tags: nameself名称age成员varscolorkids
1条回答
网友
1楼 · 发布于 2024-04-30 01:07:23

试试这个:

class Animal(object):
    __slots__ = ('legs','name','color','smell','age','kids')
    def __init__(self):
        self.legs = 2
        self.name = 'Dog'
        self.color= 'Spotted'
        self.smell= 'Alot'
        self.age  = 10
        self.kids = 0

a = Animal()

for var in a.__slots__:
    print(var + '=' + str(getattr(a, var)))

相关问题 更多 >