Python中self字的用途是什么?我知道它指的是从该类创建的特定对象,但我不明白为什么它需要显式地作为参数添加到每个函数中.举例来说,在Ruby中,我可以做到:

class myClass
    def myFunc(name)
        @name = name
    end
end

我很容易理解.但是在Python中,我需要包括self个:

class myClass:
    def myFunc(self, name):
        self.name = name

有人能告诉我这件事吗?这不是我在我的(诚然有限的)经历中遇到的事情.

推荐答案

之所以需要使用self.,是因为Python不使用@语法来引用实例属性.Python决定以一种方式执行方法,使该方法所属的实例自动为passed,而不是自动为received:方法的第一个参数是调用该方法的实例.这使得方法与函数完全相同,实际名称由您决定(尽管self是惯例,当您使用其他方法时,人们通常会对您皱眉)self对代码来说并不特殊,它只是另一个对象.

Python本来可以做一些其他的事情来区分普通名称和属性--像Ruby那样的特殊语法,或者需要像C++和Java这样的声明,或者更不同的声明--但是它没有做到.Python的所有功能都是为了让事情变得明确,让什么是什么变得显而易见,虽然它不是在所有地方都这样做,但是它确实对属性做了这样的事情.这就是分配给实例属性需要知道要分配给哪个实例的原因,这也是它需要self.个实例的原因.

Python相关问答推荐

使用FASTCGI在IIS上运行Django频道

时间序列分解

将jit与numpy linSpace函数一起使用时出错

Gekko:Spring-Mass系统的参数识别

如何删除索引过go 的lexsort深度可能会影响性能?' &>

使可滚动框架在tkinter环境中看起来自然

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

在ubuntu上安装dlib时出错

如何在Python中获取`Genericums`超级类型?

需要帮助重新调整python fill_between与数据点

dask无groupby(ddf. agg([min,max])?''''

重置PD帧中的值

(Python/Pandas)基于列中非缺失值的子集DataFrame

关于两个表达式的区别

Flask运行时无法在Python中打印到控制台

如何在Python Pandas中填充外部连接后的列中填充DDL值

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

删除Dataframe中的第一个空白行并重新索引列

如何获取给定列中包含特定值的行号?