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/

相关文章:

python - 在 Python 代码中使用 'echo' 命令行

python - 如何使用 --passin 和 subprocess.Popen 自动化 Google App Engine upload_data?

javascript - 方法返回比属性更多的长度

python - Python 集合操作的运算符和非运算符版本之间的区别

Java反射-调用线程内的方法

c# - Xamarin WCF BasicHttpBinding-未实现方法或操作

Python ReportLab 段落计数打印的行数

python - Imagine 模块没有 modeler 属性

Java:我打算仅覆盖的库方法的 protected 或公共(public)访问?

python - 在 python 中使用 raw_input 获取列表