Python:将函数作为参数传递以初始化对象的方法.还是Pythonic?
|
我想知道是否存在将函数作为参数传递给对象的可接受方法(即在init块中定义该对象的方法). 更具体地说,如果函数取决于对象参数,该怎么做. 似乎足以将函数传递给对象的pythonic,函数就像其他任何对象一样是对象:
因此,当您引入对对象其他属性的依赖关系时,问题就会立即出现.
这可能只是违反了python中OOP的一些神圣原则,在这种情况下,我将不得不做其他事情,但似乎也可能有用. 尽管有几种可能的解决方法,但我想知道哪种(如果有)被认为是最可接受的. 解决方案1
解决方案2
任何想法,将不胜感激! 最佳答案 将函数传递给对象就可以了.该设计没有错. 但是,如果要将该函数转换为绑定方法,则必须小心一点.如果您执行诸如self.func = lambda x:func(self,x)之类的操作,则会创建一个引用循环-self引用了self.func,而存储在self.func中的lambda引用了self. Python的垃圾回收器确实会检测参考周期并最终对其进行清理,但这有时可能需要很长时间.过去,我的代码中曾有参考循环,这些程序经常使用500 MB以上的内存,因为python不会足够频繁地垃圾收集不需要的对象. 正确的解决方案是使用
以下所有解决方案都会创建一个参考周期,因此很糟糕: > self.func = MethodType(函数,自我) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python 网络编程详解及简单实例
- Python selenium 父子、兄弟、相邻节点定位方式详解
- 解决ImportError: libmysqlclient_r.so.16: cannot open sh
- Python基础教程学习笔记 第二章 列表和元组
- django rest framework之请求与响应(详解)
- Python中使用bidict模块双向字典结构的奇技淫巧
- python-根据多索引的一部分选择熊猫系列中的条目
- 如何在带有错误栏的条形图中绘制pandas数据帧的特定行和列(
- python – 与布尔numpy数组VS PEP8 E712的比较
- 【Python有坑系列】函数参数传递:传值?引用?
