python - Python 中的方法与函数值字段

标签 python methods

<分区>

我正在从 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__ 中都有一个单独的函数,而不是类 __dict__ 中的一个函数。 (如果您以正常方式创建和回收实例方法对象,或者在许多情况下完全优化,具体取决于 Python 版本。)

关于python - Python 中的方法与函数值字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62477883/

相关文章:

javascript - 如何使用搜索方法找到字符串变量的目标特定值?

c# - 从字符串中删除字符的问题

python - 为什么即使对池的映射调用完成,进程仍需要很长时间才能加入?

python - os.urandom 还是 ssl.RAND_bytes?

python - sklearn 未知标签类型

java - JUnit交换两个变量的测试方法

forms - Axapta:编辑表单字段值

python - 如何在跨度矩形顶部绘制 fiddle 图的主体?

python - 如何从 numpy 而不是 numpy.ma.core 进行 pycharm 自动导入?

python - render_template 中的 Flask 参数