Python获取类变量以及实例变量的方法,单一获取类变量或者实例变量很简单,但是同时获取两个变量需要对类的操作非常的熟悉,这里记录一种方法实现。
定义一个简单的类:
1 | class Person: | 
2 |     name = 'Joynice' | 
3 |     age = 18 | 
4 | |
5 |     def __init__(self): | 
6 |         self.sex = '男' | 
7 |         self.job = '程序员' | 
0x01 获取类变量
- 直接访问
1name = Person.name #Joynice - dict访问
1name = Person.__dict__.get('name') #Joynice - getattr()访问
1name = getattr(Person, 'name') #Joynice 
0x02 获取实例变量
- 实例后获取实例变量,同时也能获得类变量
1sex = Person().sex #男2name = Person().name # Joynice - 实例后通过dict获得,但是这种方法获得不了类变量
1sex = Person().__dict__.get('sex') #男2name = Person().__dict__.get('name') #None - getattr()访问实例对象中的实例变量,同时也能获得类变量
1sex = getattr(Person(), 'sex') #男2name = getattr(Person(), 'name') #Joynice 
0x03 同时返回类变量和实例变量
通过dict()获取实例后的所有变量
1 | class Person: | 
2 |     name = 'Joynice' | 
3 |     age = 18 | 
4 | |
5 |     def __init__(self): | 
6 |         self.sex = '男' | 
7 |         self.job = '程序员' | 
8 | |
9 |     def keys(self):  #类自动运行keys方法,可以设置需要返回变量的名称 | 
10 |         return ['name', 'age', 'sex', 'job'] | 
11 | |
12 |     def __getitem__(self, item): | 
13 |         return getattr(self, item)  #通过getattr(获取对应的值) | 
14 | |
15 | dict(Person()) | 
16 | #{'name': 'Joynice', 'age': 18, 'sex': '男', 'job': '程序员'} | 
0x04 总结
实例变量只有类实例后,才能获得,类变量是公有的,但是类实例化访问类变量,只是类实例中复制的一份类变量,进行操作不会影响类本身。