Python是动态语言:动态添加或删除属性、方法

发布时间:2019-06-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python是动态语言:动态添加或删除属性、方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_512_0@

Python是动态语言:动态编辑属性、动态编辑方法

上一篇文章Python元类
上一篇文章:Python装饰器:python真正入门的鉴定标准

1、运行过程中给对象绑定、删除属性

实例:

class PErson():
    def __inIT__(self,name):
        self.name=name
#定义一个对象
mark=Person("mark")#终于修炼成人了,好开森
PRint("报出我的大名",mark.name)

#直接新定义属性:age
mark.age=18
print("我的实际年龄:",mark.age)#哎????,写大了,我还是个宝宝????

#动态删除属性:
del mark.age
#这种方法删除也可以
#delattr(Person,"age")
#下面一句会报错
#print("我的实际年龄:",mark.age)#哎????,写大了,我还是个宝宝????

结果:

报出我的大名 mark
我的实际年龄: 18

2、运行过程动态绑定方法、删除方法

import types
class Person():
    def __init__(self,name):
        self.name=name
    def study(self):
        print("学习使我快乐")

#定义一个方法
def run(self,speed):
    print("我竟然会跑????,速度:",speed)

#定义一个类方法
@classmethod
def classmethod_fun(cls):
    print("我是类方法")




#定义一个静态方法
@staticmethod
def static_fun():
    print("我是静态方法")

#定义一个对象
mark=Person("mark")
mark.study()

#动态生命函数
mark.run=types.MethodType(run,mark)
#跑起来????
mark.run(100)

#绑定类方法
Person.classmethod_fun=classmethod_fun
#调用类方法
Person.classmethod_fun()
mark.classmethod_fun()

#绑定静态方法
Person.static_fun=static_fun
#调用静态放
Person.static_fun()

#删除方法
del Person.classmethod_fun
#下面一句会异常
#mark.classmethod_fun()

#这种方法删除也可以
delattr(Person,"static_fun")
#下面一句会异常
#Person.static_fun()

运行结果:

学习使我快乐
我竟然会跑????,速度: 100
我是类方法
我是类方法
我是静态方法

3、__slots__限制实例动态添加属性

仅仅对当前类有效,对继承类无效

实例:

class Person():
    __slots__ = ("name","age")
mark=Person()
mark.name="mark"
mark.age=18
#下面一句会报错
mark.object="在哪"

结果:

Traceback (most recent call last):
File "/Users/zhaolixiang/Desktop/python/test1/python是动态语言/3、slots.py", line 8, in <module>
mark.object="在哪"
AttributeError: 'Person' object has no attribute 'object'

脚本宝典总结

以上是脚本宝典为你收集整理的Python是动态语言:动态添加或删除属性、方法全部内容,希望文章能够帮你解决Python是动态语言:动态添加或删除属性、方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。