python - Python中的方法与函数值字段
问题描述
我正在从 MATLAB 切换到 Python 和 numpy,我想知道定义类方法的选项和类字段(实例变量)的函数选项之间是否有任何区别?这是示例:
class MyClass:
def __init__(self, a):
self.a=a #some variable
def add(self,b):
return self.a+b
对比
class MyClass:
def __init__(self, a):
self.a=a #some variable
self.add = lambda b: self.a+b
当我打电话时,它在两种情况下都有效
my_object=MyClass(2)
print(my_object.add(2)) #prints 4
这两种方法有什么区别吗?任何最佳实践/缺点?对我来说,第一个感觉更“正确的 OOP”,但第二个感觉更灵活。或者,也许定义是相同的,因为 Python 在后台工作的方式?
解决方案
第二个不能被覆盖并且占用更多空间,因为每个实例中都有一个单独的函数,__dict__
而不是 class 中的一个函数__dict__
。(如果您以正常方式执行实例方法对象,则会即时创建和回收,或者在许多情况下完全优化,具体取决于 Python 版本。)
推荐阅读
- python - KeyError:使用 SQLAlchemy 时 mySQL 数据库中的“TABLENAME”
- c# - 如何在 1 个查询中从 Mongo DB 获取最小值和最大值?C#
- c++ - 没有重载函数 toupper 的实例与参数列表匹配
- javascript - puppeteer chromium url 重定向到恶意软件
- wordpress - 在 WordPress 的每个页面中跳过第一个帖子
- typescript - TypeScript 类实现接口
- python - Aiohttp 无法请求百思买?
- reactjs - 进行第二次 API 调用并返回数据
- javascript - node.js中的while循环
- python - Azure 函数和 Azure Blob 存储