python中向类中动态添加新特性及删除属性方法
class Foo(object):
??? pass
?
obj = Foo()
?
# 添加對(duì)象屬性(對(duì)象名追加對(duì)象屬性)
obj.a = 100
# print(obj.a)
?
# 添加類屬性(類名稱追加類屬性)
Foo.b = 200
?
# print(Foo.b)
# print(obj.b)
?
# 添加對(duì)象方法
def obj_fun(self):
??? print(self.a)
?
# 第一方法,通過(guò)類名追加對(duì)象方法, 所有這個(gè)類的對(duì)象都能調(diào)用這個(gè)對(duì)象方法
?
Foo.o_fun= obj_fun(類名追加對(duì)象方法
# obj.o_fun()
?
# 第二方法,通過(guò)對(duì)象名追加對(duì)象方法,只有這個(gè)對(duì)象能夠使用
#obj.o2_fun = obj_fun(對(duì)象名追加對(duì)象方法
#
#obj.o2_fun(obj)(注意參數(shù)問(wèn)題
?
import types
?
# 使用MethodType函數(shù)將obj與obj_fun的參數(shù)self綁定
binded_fun =types.MethodType(obj_fun, obj)
?
obj.o2_fun =binded_fun
# obj.o2_fun()
?
# 添加類方法 (類名追加對(duì)象屬性
@classmethod
def class_fun(cls):
??? print(cls.b)
?
Foo.c_fun =class_fun
# Foo.c_fun()
?
# 添加靜態(tài)方法 (類名追加對(duì)象屬性
@staticmethod
def static_fun():
??? print("static_fun called")
?
Foo.s_fun =static_fun
# Foo.s_fun()
?
?
?
# 刪除屬性方法
?
# 對(duì)象屬性(對(duì)象名追加對(duì)象屬性
# del obj.a
delattr(obj,"a")
# print(obj.a)
?
# 類屬性(類名追加對(duì)象屬性
del Foo.b
# print(Foo.b)
?
# 對(duì)象方法(類名追加對(duì)象方法
del Foo.o_fun
# obj.o_fun()
# 類方法???
del Foo.c_fun
# 靜態(tài)方法
del Foo.s_fun
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python中向类中动态添加新特性及删除属性方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 写了 10 年代码之后,我学到的 7 个
- 下一篇: 利用python批量修改文件名称