python中向类中动态添加新特性及删除属性方法
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)
?
# 第一方法,通過類名追加對象方法, 所有這個類的對象都能調(diào)用這個對象方法
?
Foo.o_fun= obj_fun(類名追加對象方法
# obj.o_fun()
?
# 第二方法,通過對象名追加對象方法,只有這個對象能夠使用
#obj.o2_fun = obj_fun(對象名追加對象方法
#
#obj.o2_fun(obj)(注意參數(shù)問題
?
import types
?
# 使用MethodType函數(shù)將obj與obj_fun的參數(shù)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()
?
# 添加靜態(tài)方法 (類名追加對象屬性
@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
# 靜態(tài)方法
del Foo.s_fun
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python中向类中动态添加新特性及删除属性方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写了 10 年代码之后,我学到的 7 个
- 下一篇: 1.NoSQL与MongoDB简介