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

python:将一个外部函数,转化为类中的方法

2017-06-16 22:08 176 查看
python作为一门动态语言,在对于oop的实现上,相比Java,就少了很多限制。也多了很多的“随意性”。

当然,这种随意性和动态特性,也让python代码在后续的维护变得更加困难。

在非必要的情况下,个人不建议这些做法。

但是对这些操作,了解一下还是有必要的。

第一,在阅读代码的时候,不会对这种操作感到困惑

第二,在特定的场景下,可能需要进行这种操作

# -*- coding: UTF-8 -*-
"""
Created on 2017/6/16
@author: cat

将一个外部函数,转化为类中的方法
"""

class rec:
pass

def upperName(self):
return self.name.upper()

rec.func = upperName # 在类的外部,给类增加方法(属性)

if __name__ == '__main__':
rec.name = "bob" # 在类的外部,给类增加属性

x = rec()
y = rec()
y.name = 'tom' # 在对象增加属性
print(rec.name, x.name, y.name)

print(rec.__dict__.keys())
print(x.__dict__.keys())
print(y.__dict__.keys())
print(y.__class__)
print(rec.__bases__)

print(upperName(x), upperName(y))

print(x.func(), y.func(), rec.func(x))

"""
bob bob tom
dict_keys(['__module__', '__dict__', '__weakref__', '__doc__', 'func', 'name'])
dict_keys([])
dict_keys(['name'])
<class '__main__.rec'>
(<class 'object'>,)
BOB TOM
BOB TOM BOB

"""


另外,python中对对象方法的调用也有两种形式:

1. obj.method()

2. class.method(obj)


在上面的案例中,就有
x.func() & rec.func(x)
这两种操作。对于python而言,都是可行的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐