您的位置:首页 > 编程语言 > Python开发

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

2017-08-06 22:51 666 查看
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函数将obj与obj_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: