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

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而言,都是可行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值