python动态绑定属性或方法

本文介绍了Python中动态绑定属性和方法的概念,通过创建Student类并实例化,展示了如何动态给实例对象添加属性和方法。同时,还讨论了如何直接在类级别上绑定方法和属性,使得所有实例都能访问。示例中包括了动态绑定的详细操作步骤和输出结果。
摘要由CSDN通过智能技术生成

python动态绑定属性或方法

  1. 动态绑定属性 (对象名.绑定属性=“value值”)

定义一个Student类

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

创建一个实例

s = Student('半夏动漫')

动态给实例绑定属性belongs

s.belongs = "快手动漫"
print(s.__dict__)
print("姓名:%s" % s.name)
print("平台:%s" % s.belongs)
# {'name': '半夏动漫', 'belongs': '快手动漫'}
# 姓名:半夏动漫
# 平台:快手动漫
  1. 动态绑定方法

最简单的动态绑定方法:
先创建一个类

class Student(object):
    def __init__(self):
        self

在类外定义一个函数

def set_score():
    print("恭喜你!成功绑定了这个方法")

创建两个实例数s,t

s = Student()
t=Student()

给实例s动态绑定set_score方法

s.set_score = set_score
s.set_score()
# t.set_score() # 没绑定会报错
print(s.__dict__)
print(t.__dict__)

结果是:

# 恭喜你!成功绑定了这个方法
# {'set_score': <function set_score at 0x000002274648F160>}
# {}
  1. 除了给实例对象动态绑定属性和方法外,还可以直接给类进行绑定

类绑定的方法和属性,所有实例对象都可以调用
但绑定的属性相当于类变量

先创建一个类

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

定义一个函数作为实例方法

def set_score(self, score):
    self.score = score

给class绑定方法

Student.set_score = set_score
Student.sex='男生'

创建实例

s1 = Student('雨')
s2 = Student('云')
s1.set_score("98")
print("实例s:%s" % s1.score)
s2.set_score("96")
print("实例s2:%s" % s2.score)
print(s1.__dict__)
print(s2.__dict__)
print(Student.__dict__)
print("s1是:",s1.sex)
print("s2是:",s2.sex)
print(Student.sex)

结果是:

# 实例s:98
# 实例s2:96
# {'name': '雨', 'score': '98'}
# {'name': '云', 'score': '96'}
# {'__module__': '__main__', '__init__': <function Student.__init__ at 0x000002F16B17CE50>,
#           '__dict__': <attribute '__dict__' of 'Student' objects>,
#           '__weakref__': <attribute '__weakref__' of 'Student' objects>,
#           '__doc__': None, 'set_score': <function set_score at 0x000002F16B02F160>,
#           'sex': '男生'}
# s1是: 男生
# s2是: 男生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白夜的月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值