美文网首页
单方法类改写成函数

单方法类改写成函数

作者: 码男将将 | 来源:发表于2021-11-18 07:20 被阅读0次

前言:

来自python cook的知识点,看完就觉得发现了新大陆.但是目前还没想好这么做能有啥好处 hah.现在分享出来大哥们看完如果有好的使用场景跪求帮上课.

问题:

有一个方法每次被调用都要记录调用的次数,并且会返回目前被调用了多少次

类实现

class TestClass:
  def __init__(self):
    self.count = 0
  def print_word(self, word)
    self.count += 1
    print("调用次数:{}--单词:{}".format(self.count, word)

if __name__ == "__main__":
  temp = TestClass()
  temp.print_word("hello") #调用次数:1--单词:hello
  temp.print_word("world") #调用次数:2--单词:world

改为函数实现

def shell():
  count = 0
  def print_word(word):
    nonlocal count
    count += 1
    print("调用次数:{}--单词:{}".format(count, word)
  return print_word
if __name__ == "__main__":
  temp = shell()
  temp("hello") #调用次数:1--单词:hello
  temp("world") #调用次数:2--单词:world

结论

类是使用了实例属性去做的次数累加,对象不销毁count变量可以一直用作计数
函数使用了闭包特性,内部函数使用了外部函数的变量count进行计数.脑袋稍微绕一下,这个外部函数的变量count是否可以理解成类属性?

写在后面

原文作者说:"任何时候只要你碰到需要给某个函数增加额外的状态信息的问题,都可以考虑使
用闭包。相比将你的函数转换成一个类而言,闭包通常是一种更加简洁和优雅的方案"
可以说是优雅永不过时!!!

相关文章

  • {C#-05C} 单测.复合方法

    背景 合成多个子方法时传参多,责任不清时难单测 代码例 环境类 环境类单测 子函数 子函数单测 复合函数 复合函数单测

  • 装饰器(Decorator)

    装饰器(Decorator) 装饰器是一种函数,写成@ + 函数名。它可以放在类和类方法的定义前面。 类上的装饰 ...

  • 【code_小马】检测字符串中是否含有系统表情

    - 方法函数 使用方法 如果使用的地方比较多,也可以把它写成类方法,封装到工具类里边,随用随取。如果对于封装工具类...

  • TypeScript 装饰器

    TypeScript 与 ES6 的装饰器? ES6 的装饰器是一种函数,写成@ + 函数名。它可以放在类和类方法...

  • ES6 Decorator装饰器 入门学习和理解

    装饰器分类 Decorator装饰器是一种函数,写成@ + 函数名。它可以放在类和类方法的定义前面。 上面代码一共...

  • Kotlin继承与多态 (1)继承

    调用父类构造函数使用主构造函数使用此构造函数重载使用参数默认值调用构造函数重写成员属性和函数重写成员属性重写成员函...

  • Python高级第九天

    一、单继承 子类为了调用父类(超类)的一个方法,可以使用 super() 函数,比如: super() 函数的一个...

  • runtime常用方法

    类 类结构 类实例结构 常用函数 方法 结构 类方法的常用函数 方法的常用函数 方法选择器 动态创建类 示例: 动...

  • Flutter 中extends、implements、with

    1、继承extends a、Flutter中继承是单继承b、构造函数或者析构函数不能继承c、子类重写父类方法要在方...

  • U3D

    1. 单例--- A类调用B类中的F1函数的方法: 在B 类中创建一个静态对象: public static B ...

网友评论

      本文标题:单方法类改写成函数

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