python中self是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中self是啥意思?相关的知识,希望对你有一定的参考价值。

在class里面,一直都有__init__和self,我一直没明白这究竟是什么意思,只是照着别人的代码模仿着写。为什么class里面要定义self?为什么要初始化?谢谢!

参考技术A 题主可以学习一下面向对象编程的一般知识。
概括的说,主流的支持面向对象编程的语言(Java, python等)关于“类”的定义是很接近的。类要有一个构造函数(python里就是__init__,Java里是与类同名且无返回值的一个方法),在生成对象时会自动调用。然后为了方便在类的方法中引用当前对象,就引入了一些关键字(python里是self,Java里是this)。所以self并不是程序员自己定义的,而是语言本身内建支持的。
关于self,由于python的语法确实比较奇特,看起来好像self是一个普通参数,但实际并非如此。
关于构造函数,如果题主没有感觉到其存在的必要性,不必在意,不过要记住有这样一个语法。等以后遇到有需求的时候自然就明白了。本回答被提问者采纳

“结果[::-1]”是啥意思?

【中文标题】“结果[::-1]”是啥意思?【英文标题】:What does 'result[::-1]' mean?“结果[::-1]”是什么意思? 【发布时间】:2012-11-02 03:47:50 【问题描述】:

我刚刚遇到下面的 python 代码,这让我有点困惑:

 res = self.result[::-1].encode('hex')

编码的东西很清楚,应该用十六进制值表示。然而,什么 这 self.result[::-1] 是什么意思,尤其是冒号?

【问题讨论】:

【参考方案1】:

它代表从结果中获取的“切片”。第一个元素是起始位置,第二个是结束(不包括),第三个是步骤。冒号之前/之后的空值表示您是从头开始 (s[:3]) 或延伸到结尾 (s[3:])。您也可以在此处包含实际数字,但尽可能将其排除在外更为惯用。

例如:

In [1]: s = 'abcdefg'

返回从开头开始并在索引位置 2 处停止的字符串切片:

In [2]: s[:3]
Out[2]: 'abc'

返回从第三个索引位置开始并延伸到末尾的字符串切片:

In [3]: s[3:]
Out[3]: 'defg'

返回从末尾开始的字符串切片,每次后退一个元素:

In [4]: s[::-1]
Out[4]: 'gfedcba'

返回包含所有其他元素的字符串切片:

In [5]: s[::2]
Out[5]: 'aceg'

它们也可以相互结合使用。在这里,我们返回一个切片,该切片返回从索引位置 6 开始到索引位置 2 的所有其他元素(请注意,s[:2:-2] 会更惯用,但我选择了奇怪数量的字母 :)):

In [6]: s[6:2:-2]
Out[6]: 'ge'

step 元素确定要返回的元素。在您的示例中,-1 表示它将在项目中后退一步,一次一个元素。

【讨论】:

太好了,这很容易理解。所以本质上这就是这里使用的列表操作! @Patrick 你明白了 :) 你会经常在字符串/列表中看到它,它甚至可以用于列表的分配(例如l = ['one', 'two', three']; l[:2] = ['changed'])。希望对您有所帮助! 如果 a[::1] 的意思是,从“开始”到“结束”,逐步增加 1.. 那么为什么 a[::-1] 的意思是 - 从“结束”到“开始” ' 一步一步 -1 ?【参考方案2】:

这是颠倒列表的常见习语。

a = ['a', 'b', 'c', 'd']
b = a[::-1]
print b

['d', 'c', 'b', 'a']

您可以阅读“扩展切片”here。

【讨论】:

不幸的选择了单词,它没有反转一个列表! a.reverse() 反转列表aa[::-1] 返回 a 的反向副本。 虽然如此,但我的措辞是故意的;这种区别最终可能会让初学者更加困惑,通常通过简化和使用抽象来更好地服务它们,直到它发生意想不到的事情。变量赋值和可变性是另一天的课程。

以上是关于python中self是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

下面的python脚本是啥意思啊,特别是self代表啥?

python中的__init__(self)是啥意思呢

“结果[::-1]”是啥意思?

Python 列表推导中的“或”是啥意思? [复制]

星号 * 在 Python 中是啥意思? [复制]

Python3 函数中没有标识符的单个 * 是啥意思? [复制]