美文网首页
python可调用对象

python可调用对象

作者: lintong | 来源:发表于2015-02-25 22:41 被阅读436次

Python中有一个有趣的语法,只要定义类型的时候,实现call函数,这个类型就成为可调用的。

换句话说,我们可以把这个类型的对象当作函数来使用,相当于重载了括号运算符。

例如,现在我们要计算重力环境下的自然落体位移。我们知道Sy=(gt**2)/2,那么,我们可以建立一个函数:

def g_dpm(t):
    return (9.8*t**2)/2

我们都知道,地球表面的重力加速度约等于9.8m/s**2,这个函数实在没什么技术含量。

慢,头儿说了,我要算的是火星啊¥%#!

呃……你能说人家无理取闹么?EA的FIFA足球里,我还见过微重力模式的球场,总之,在计算机程序里,很多超现实的需求都有可能。

恩,最简单的办法当然是:

def mar_g_dpm(t):
    return (3.92*t**2)/2 #火星表面的重力加速度约等于地球表面的2/5

不过,你真的能保证下次那个可爱的策划不会再设计一个金星场景?或者木星?或者该死的大魔导师行会开始出售新的魔法卷轴——重力操控?

当然,我们可以这样设计这个函数:

def g_dpm(g, t):
    return (g*t**2)/2

但是g相对于t,是一个稳定得多的数量,基本上,在一次相关运算中,g可以当作常量。那么,一个可调用对象也许更适合。下面定义这样一个类型:

class g_dpm(object):
    def __init__(self, g):
        self.g = g
    def __call__(self, t):
        return (self.g*t**2)/2

计算地球场景的时候,我们就可以令
e_dpm = g_dpm(9.8),s = e_dpm(t)。
同样的方式,可以很容易的生成其他重力环境下的自由落地公式

我们需要判断python中的对象是否可以调用,可以用内置方法python callable()
如果对象可以调用的,则返回true,如果对象不能调用,则返回false.

相关文章

  • 魔法方法__del__

    创建对象后,python解释器默认调用__init__()方法; 当删除一个对象时,python解释器也会默认调用...

  • python-复盘-特殊方法__call__

    在Python中,函数其实是一个对象: 由于f可以被调用,所以,f 被称为可调用对象。 所有的函数都是可调用对象。...

  • 可调用对象

    我们知道在Python中,函数是一个对象。由于函数可以被调用,所以函数被称为可调用对象。所有的函数都是可调用对象。...

  • Python装饰器4-函数参数是函数名

    Python的函数参数可以是可调用对象 对于函数名就是一个可调用对象 小结 Python装饰器的语法是将被装饰的函...

  • python可调用对象

    Python中有一个有趣的语法,只要定义类型的时候,实现call函数,这个类型就成为可调用的。 换句话说,我们可以...

  • Python 可调用对象

    python也是一门面向对象的语言,所以所有的东西皆对象。那么有一种对象叫做可调用对象,这种对象实现了__call...

  • Python 可调用对象

    当我们将函数作为参数传递时,实际传递的是一个可调用对象,我们要执行该函数对象也很简单,执行在函数对象两侧加()即可...

  • Python中的类装饰器

    1,对象能不能被调用 在Python中对象一般是不可以被调用的, person=Person() ,person(...

  • 小白学 python之——读写文件

    在Python 中,读写文件有3 个步骤:1.调用open()函数,返回一个File 对象。2.调用File 对象...

  • Python装饰器12-类的__call__方法

    Python中万物皆对象,对象分为可调用和不可调用,可调用就是一个对象名称后面可以跟(),如之前所说装饰器语法糖必...

网友评论

      本文标题:python可调用对象

      本文链接:https://www.haomeiwen.com/subject/qxcpxttx.html