37,720
社区成员
发帖
与我相关
我的任务
分享
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
class MyClass:
def __init__(self, name):
self.name = name
def get_attr(m):
#返回属性(不包括那些由双下划线开始的默认属性)
return [a for a in dir(m) if not a.startswith('__')]
def set_a(self, value):
self.a = value
def set_b(self, value):
self.b = value
def set_c(self, value):
self.c = value
m = MyClass('Test')
print('原始属性 :',get_attr(m))
from types import MethodType
MyClass.set_a = set_a #方法一:属性赋值
setattr(MyClass, 'set_b', set_b) #方法二:设置属性
MyClass.set_c = MethodType(set_c, MyClass) #方法三:绑定方法
print('绑定方法之后:',get_attr(m))
m.set_a(1)
m.set_b(2)
m.set_c(3)
get_attr(m)
print('执行方法之后:',get_attr(m))
m2 = MyClass('Test2')
print('新建实例属性:',get_attr(m2))
原始属性 : ['name']
绑定方法之后: ['name', 'set_a', 'set_b', 'set_c']
执行方法之后: ['a', 'b', 'c', 'name', 'set_a', 'set_b', 'set_c']
新建实例属性: ['c', 'name', 'set_a', 'set_b', 'set_c']