关于python:列出类的所有属性

List all atributes of a class

本问题已经有最佳答案,请猛点这里访问。

我们可以列出一个类的所有属性(仅属性)?

如果有的话,这个类例如:

1
2
3
4
5
6
7
8
class c1():
    def __init__(self, x, y):
        self.fx = x
        self.fy = y
        self.fz = 0

    def fun1():
        return self.fx

使用dir(c1),我们可以得到一个包含类的所有对象的完整列表,包括atribute,但是我们不知道方法和atribute的不同。

我原以为这会奏效:

type( dir(obj1)[-1] )是最后一个属性,但类型返回一个字符串。


可以使用__dict__关键字访问属性。

1
2
3
4
5
6
7
8
9
10
11
class c1():
    def __init__(self, x, y):
        self.fx = x
        self.fy = y
        self.fz = 0

    def fun1():
        return self.fx

obj1 = c1(1,2)
print(obj1.__dict__)

产量

{'fx': 1, 'fy': 2, 'fz': 0}


使用__dict__.keys()

1
2
3
4
5
6
7
8
9
10
11
class c1():
    def __init__(self, x, y):
        self.fx = x
        self.fy = y
        self.fz = 0

    def fun1():
        return self.fx

obj1 = c1(1,2)
print(obj1.__dict__.keys())

输出:dict_keys(['fx', 'fy', 'fz'])

您可能还需要查看pprint()。