python遍历类中所有成员的方法

在Python中,类是一种重要的编程机制,它提供了一种封装数据和方法的方式 。通常,我们定义一个类时,会在其中定义一些成员变量和成员方法 。但是,有时候我们想要遍历类中的所有成员,这时候该怎么做呢?本文将从多个角度分析Python遍历类中所有成员的方法 。
1. 使用dir()函数

python遍历类中所有成员的方法

文章插图
Python中的dir()函数可以返回一个对象的所有属性和方法,包括内置属性和方法 。我们可以利用这个函数来遍历类中的所有成员 。下面是一个示例:
```
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name)
p = Person("Bob", 30)
members = dir(p)
for member in members:
print(member)
```
上面的代码定义了一个Person类,并创建了一个对象p 。利用dir()函数,我们可以获取p对象的所有成员 。运行结果如下:
```
__class__
__delattr__
__dict__
__dir__
__doc__
__eq__
__format__
__ge__
__getattribute__
__gt__
__hash__
__init__
__init_subclass__
__le__
__lt__
__module__
__ne__
__new__
__reduce__
__reduce_ex__
__repr__
__setattr__
__sizeof__
__str__
__subclasshook__
__weakref__
age
name
say_hello
```
从结果中可以看出,除了我们自己定义的成员外,还有一些内置的成员,例如__class__、__delattr__等 。
2. 使用vars()函数
vars()函数可以返回一个对象的所有成员变量,不包括成员方法和内置成员 。我们可以利用这个函数来遍历类中的所有成员变量 。下面是一个示例:
```
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name)
p = Person("Bob", 30)
members = vars(p)
for member in members:
print(member)
```
上面的代码定义了一个Person类,并创建了一个对象p 。利用vars()函数,我们可以获取p对象的所有成员变量 。运行结果如下:
```
age
name
```
从结果中可以看出,vars()函数只返回了自己定义的成员变量,不包括成员方法和内置成员 。
3. 使用inspect模块
Python的inspect模块提供了一些有用的函数,可以用来获取类的信息 。其中,getmembers()函数可以返回一个对象的所有成员,包括成员变量和成员方法 。下面是一个示例:
```
import inspect
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name)
p = Person("Bob", 30)
members = inspect.getmembers(p)
for member in members:
print(member)
```
上面的代码定义了一个Person类,并创建了一个对象p 。利用inspect模块的getmembers()函数,我们可以获取p对象的所有成员 。运行结果如下:
```
('__class__', )
('__delattr__', )
('__dict__', {'name': 'Bob', 'age': 30})
('__dir__', )
('__doc__', None)
('__eq__', )
('__format__', )
('__ge__', )
('__getattribute__', )

推荐阅读