欢迎访问宙启技术站
智能推送

获取Python类的成员信息,使用get_class_members()函数是一个好选择

发布时间:2023-12-17 07:12:24

要获取Python类的成员信息,可以使用内置的inspect模块中的getmembers()函数。getmembers()函数返回一个类的所有成员的元组列表,包括方法、属性、类变量等。

下面是一个使用getmembers()函数获取类的成员信息的例子:

import inspect

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def say_hello(self):
        print(f"Hello, my name is {self.name}. I am {self.age} years old.")

person = Person("John", 25)

members = inspect.getmembers(person)

for member in members:
    print(member)

输出结果为:

('__class__', <class '__main__.Person'>)
('__delattr__', <method-wrapper '__delattr__' of Person object at 0x7f0f640a15b0>)
('__dict__', {'name': 'John', 'age': 25})
('__dir__', <built-in method __dir__ of Person object at 0x7f0f640a15b0>)
('__doc__', None)
('__eq__', <method-wrapper '__eq__' of Person object at 0x7f0f640a15b0>)
('__format__', <built-in method __format__ of Person object at 0x7f0f640a15b0>)
('__ge__', <method-wrapper '__ge__' of Person object at 0x7f0f640a15b0>)
('__getattribute__', <method-wrapper '__getattribute__' of Person object at 0x7f0f640a15b0>)
('__gt__', <method-wrapper '__gt__' of Person object at 0x7f0f640a15b0>)
('__hash__', <method-wrapper '__hash__' of Person object at 0x7f0f640a15b0>)
('__init__', <bound method Person.__init__ of <__main__.Person object at 0x7f0f640a15b0>>)
('__init_subclass__', <built-in method __init_subclass__ of type object at 0x5570f628a320>)
('__le__', <method-wrapper '__le__' of Person object at 0x7f0f640a15b0>)
('__lt__', <method-wrapper '__lt__' of Person object at 0x7f0f640a15b0>)
('__module__', '__main__')
('__ne__', <method-wrapper '__ne__' of Person object at 0x7f0f640a15b0>)
('__new__', <built-in method __new__ of type object at 0x5570f628a320>)
('__reduce__', <built-in method __reduce__ of Person object at 0x7f0f640a15b0>)
('__reduce_ex__', <built-in method __reduce_ex__ of Person object at 0x7f0f640a15b0>)
('__repr__', <method-wrapper '__repr__' of Person object at 0x7f0f640a15b0>)
('__setattr__', <method-wrapper '__setattr__' of Person object at 0x7f0f640a15b0>)
('__sizeof__', <built-in method __sizeof__ of Person object at 0x7f0f640a15b0>)
('__str__', <method-wrapper '__str__' of Person object at 0x7f0f640a15b0>)
('__subclasshook__', <built-in method __subclasshook__ of type object at 0x5570f628a320>)
('__weakref__', None)
('age', 25)
('name', 'John')
('say_hello', <bound method Person.say_hello of <__main__.Person object at 0x7f0f640a15b0>>)

在上述例子中,getmembers()函数返回的列表包含了类Person的所有成员信息。其中,成员以元组的形式返回,元组的 个元素是成员的名称,第二个元素是成员的值。

通过遍历成员列表,我们可以访问每个成员的具体信息,例如成员的名称和值。

这样,我们就可以使用getmembers()函数获取Python类的成员信息。