Python获取类变量以及实例变量的方法,单一获取类变量或者实例变量很简单,但是同时获取两个变量需要对类的操作非常的熟悉,这里记录一种方法实现。
定义一个简单的类:
1 | class Person: |
2 | name = 'Joynice' |
3 | age = 18 |
4 | |
5 | def __init__(self): |
6 | self.sex = '男' |
7 | self.job = '程序员' |
0x01 获取类变量
- 直接访问
1
name = Person.name #Joynice
- dict访问
1
name = Person.__dict__.get('name') #Joynice
- getattr()访问
1
name = getattr(Person, 'name') #Joynice
0x02 获取实例变量
- 实例后获取实例变量,同时也能获得类变量
1
sex = Person().sex #男
2
name = Person().name # Joynice
- 实例后通过dict获得,但是这种方法获得不了类变量
1
sex = Person().__dict__.get('sex') #男
2
name = Person().__dict__.get('name') #None
- getattr()访问实例对象中的实例变量,同时也能获得类变量
1
sex = getattr(Person(), 'sex') #男
2
name = 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 总结
实例变量只有类实例后,才能获得,类变量是公有的,但是类实例化访问类变量,只是类实例中复制的一份类变量,进行操作不会影响类本身。