python中向类中动态添加新特性及删除属性方法

来源:互联网 发布:单片机论文题目 编辑:程序博客网 时间:2024/05/23 21:57

class Foo(object):

    pass

 

obj = Foo()

 

# 添加对象属性(对象名追加对象属性)

obj.a = 100

# print(obj.a)

 

# 添加类属性(类名称追加类属性)

Foo.b = 200

 

# print(Foo.b)

# print(obj.b)

 

# 添加对象方法

def obj_fun(self):

    print(self.a)

 

# 第一方法,通过类名追加对象方法, 所有这个类的对象都能调用这个对象方法

 

Foo.o_fun= obj_fun(类名追加对象方法

# obj.o_fun()

 

# 第二方法,通过对象名追加对象方法,只有这个对象能够使用

#obj.o2_fun = obj_fun(对象名追加对象方法

#

#obj.o2_fun(obj)(注意参数问题

 

import types

 

#使用MethodType函数将objobj_fun的参数self绑定

binded_fun =types.MethodType(obj_fun, obj)

 

obj.o2_fun =binded_fun

# obj.o2_fun()

 

# 添加类方法 (类名追加对象属性

@classmethod

def class_fun(cls):

    print(cls.b)

 

Foo.c_fun =class_fun

# Foo.c_fun()

 

# 添加静态方法 (类名追加对象属性

@staticmethod

def static_fun():

    print("static_fun called")

 

Foo.s_fun =static_fun

# Foo.s_fun()

 

 

 

# 删除属性方法

 

# 对象属性(对象名追加对象属性

# del obj.a

delattr(obj,"a")

# print(obj.a)

 

# 类属性(类名追加对象属性

del Foo.b

# print(Foo.b)

 

# 对象方法(类名追加对象方法

del Foo.o_fun

# obj.o_fun()

# 类方法   

del Foo.c_fun

# 静态方法

del Foo.s_fun

原创粉丝点击