Python中如何动态绑定属性和方法

本文介绍了Python中如何动态地为类对象添加属性和方法,包括实例方法、类方法和静态方法的添加方式,并提到通过设置`__slots__`属性来限制可添加的属性和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学Java,C++等静态语言时,不能在类外为某个对象临时定义一个类内的属性或方法,所有的方法和属性都必须在类内声明,而Python,JavaScript,PHP等脚本语言是可以在类外为某个类对象动态添加属性或方法的!

  • 添加类属性的方法很简单
class Animal:
    pass
cat = Animal()
cat.name = "小白"

像上面那样,直接用某个类对象创建一个新的属性即可。

  • 添加实例方法时,需要import types来引入MethodType方法,具体操作如下:
import types
class Animal:
    pass
cat = Animal()
cat.name = "小白"
def run(self):
    print(self.name) #输出“小白”
    pass
cat.run = types.MethodType(run,cat) 
cat.run()
  • 添加类方法或者静态方法的步骤和前面绑定类属性类似,先用修饰器定义一个类方法或静态方法eat(),然后直接Animal.eat = eat,之后就可以直接调用了。
  • 最后如果想要限制别人随意的动态添加属性或方法,我们可以在类中添加一个__slots__ = ("name","run") 属性,括号中为可以添加的属性或方法的名字,比如这题只有namerun这两个属性或方法可以动态添加,其他的都被限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值