python-对象实例只有数据属性

我们通常使用 __init__ 来初始化时,会为其添加数据属性,例如 self.name = xxx ,但是却几乎不会为实例添加方法,也就是说实例中的方法,都是在类中找的。这样做其实有好处,因为方法一般是通用的,如果每一个实例都要保存一套方法的话,实在太浪费资源,而把这些方法统一保存到类中,用到的时候来类里找,就节约了许多。

当然,我们也可以任性地为某个实例添加方法,python 支持动态添加属性。

class Test:
    pass

def fangfa():
    print '我是某个实例的方法'

a = Test()
b = Test()
a.abc = fangfa  # 特意添加一个方法
a.abc()
b.abc()     # b 没有这个方法

同样的,我们也可以为类动态添加一个方法:

class Test:
    pass

def fangfa(self):   # self 代表是实例方法,只能由实例调用
    print '我是方法'

Test.abc = fangfa
a = Test()
a.abc()

 

posted @ 2018-07-11 16:06  benchdog  阅读(177)  评论(0编辑  收藏  举报