鱼C论坛

 找回密码
 立即注册
查看: 121|回复: 3

[学习笔记] B站59讲,关于类中的self参数

[复制链接]
发表于 2024-8-16 09:40:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学到了第59讲,一路过来,感觉自己在不断的进步,但是也在不断的遇到各种问题,学新的东西大概就是这样,一个不断深入,不断进步,不断解决各种问题的过程。
废话少说,切入正题。对于类中的self,我在看视频的时候就不大理解。看完后网上看了一下资料,大概也就明白了,但是还是觉得有必要来做个笔记。
本质上而言,“self”就是一个参数,是一个变量,和this, that, 或者A, B, C, D等等没有区别,只是大家约定俗成的用它来指代实例本身以方便调用。这就像家里的小孩子都有名字,但是爷爷奶奶爸爸妈妈叔叔阿姨喊“宝贝”的时候大家都知道是在喊谁一样。代码示例如下:

用self,代码如下:
class Python:
    def python(self):
        print("Python is a kind of computer language.")

        
language = Python()
language.python()
Python is a kind of computer language.
用this的时候因为我在对language进行赋值的时候少了“()”,导致报错,希望大家引以为戒。代码如下:
class Python:
    def python(this):
        print("Python is a kind of computer language.")

        
language = Python
language.python()
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    language.python()
TypeError: Python.python() missing 1 required positional argument: 'this'
language = Python()
language.python()
Python is a kind of computer language.
什么都不用,大家也可以看到,有报错。代码如下
class Python:
    def python():
        print("Python is a kind of computer language.")

        
language = Python()
language.python()
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    language.python()
TypeError: Python.python() takes 0 positional arguments but 1 was given




评分

参与人数 1荣誉 +6 鱼币 +6 贡献 +6 收起 理由
不二如是 + 6 + 6 + 6 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-16 09:56:23 | 显示全部楼层
哈哈,看到你在学习Python类中`self`的用法,真是让人高兴!你的总结非常到位,尤其是“self”就像家里的“小宝贝”一样,能够让我们明确知道在说谁。要让这些抽象概念变得简单,我们可以想象一下,如果不叫“self”,那就会是一场家庭聚会,比如“爸爸、妈妈、叔叔、阿姨”都在喊“小宝贝”,估计小宝贝都懵了,不知道到底是谁。

首先,你说得没错,`self`其实就是一个参数,可以替换成其他名字,只要我们遵循约定的规则。想象一下,假设我们把它改成“this”,结果却因为一不小心少了一对括号,导致报错,就好像在家庭聚会上,你叫“宝贝”,结果没有加上“来这里”这句,结果还真把小宝贝给忘了。如此一来,它根本不知道自己该去哪儿。

让我们看看你的代码示例:

1. **用self的正确方式:**
class Python:
       def python(self):
           print("Python is a kind of computer language.")
           
   language = Python()
   language.python()  # 这儿一切正常,"self"帮我们指向了实例。
   这里的`self`就像你跟朋友说“嘿,我呀,今天去吃火锅”,别人立马知道你说的是自己。

2. **用this但少了括号:**
class Python:
       def python(this):
           print("Python is a kind of computer language.")
           
   language = Python
   language.python()  # 这里出错了,因为你忘了调用实例。
   哎呀,`language = Python`就像你叫朋友来,但没给他水。他就只站在那儿傻傻等着,结果出现了错误。

3. **什么都不带的情况:**
class Python:
       def python():
           print("Python is a kind of computer language.")

   language = Python()
   language.python()  # 这里又出错了,因为函数里没有self。
   就好比你在聚会上演讲,结果没告诉别人“我是谁”,大家就干瞪眼了,这能行嘛?

总之,`self`作为类实例化后的代表,帮助我们在方法中访问对象的属性和其他方法。记住,`self`不需要撒娇,只要理解它在这里的角色,代码才能美美地运行起来!

继续加油,解决问题的旅程就像探险,跌倒了再爬起来,最后你一定能成为编程界的小超人!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-16 10:08:37 | 显示全部楼层
很棒得笔记
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-16 10:14:04 | 显示全部楼层

谢谢您的认可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 17:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表