Python 给实例或者类动态绑定属性和方法

首页定义一个class,创建一个实例之后,我们可以给该实例绑定任何属性和方法,先定义class:

class Student:
def __init__(self, name, score):
self.name = name
self.score = score

创建一个实例:

s1 = Student('sandy', 60)  # 创建一个实例并初始化
s1.age = '15' # 给实例s1绑定一个属性
print(s1.age) # 打印这个属性
输出结果是:15

还可以给实例s1绑定一个方法,先定义一个方法:
def set_age(self, age):
self.age = age

然后绑定到实例s1
 from types import MethodType
s1 = Student('sandy', 60)  # 创建一个实例并初始化
s1.set_age = MethodType(set_age, s1) # 给实例绑定一个方法
s1.set_age(22)  # 使用这个方法
print(s1.age) # 输出通过绑定方法设定的值
输出结果:22

绑定到实例的方法,只对这个实例s1有用,对别的实例是没有用的
如果要对其他的实例也有用,那么可以把方法绑定在class上
# _*_ coding:utf-8 _*_
from types import MethodType
 
def set_school(self, school):  # 定义好要绑定到类的方法
self.school = school


class Student: ## 定义类
def __init__(self, name, score):
self.name = name
self.score = score


Student.set_school = set_school # 把方法绑定到类上
s1 = Student('sandy', 60) # 初始化一个实例
s1.set_school('hanghzou') # 实例调用类绑定的方法
print(s1.school)
s2 = Student('hello', 22)
s2.set_school('yuhang')
print(s2.school)

输出结果:

hanghzou
yuhang

 
原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8575098.html