鱼C论坛

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

[已解决]这里为什么要加上self?

[复制链接]
发表于 2019-5-6 12:28:01 | 显示全部楼层 |阅读模式

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

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

x
class BB:
    def printBB(self):
        print("no zuo no die")

bb = BB()
bb.printBB()
最佳答案
2019-5-7 20:59:34
因为实例化的对象调用它的方法时,它会把这个实例化对象传给方法的第一个参数,如果没有self这个参数,
python就会报错。
例如说:
  1. class BB:
  2.     def printBB():
  3.         print("no zuo no die")

  4.         
  5. bb = BB()
  6. bb.printBB()
  7. Traceback (most recent call last):
  8.   File "<pyshell#5>", line 1, in <module>
  9.     bb.printBB()
  10. TypeError: printBB() takes 0 positional arguments but 1 was given
复制代码

去掉self, 就会报错了。
你的,就没有报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-6 13:04:39 | 显示全部楼层
      因为在调用对象的方法的时候,系统会把 self 作为参数传递给函数,所以,定义函数的时候,必须要相应地定义此参数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-6 13:07:41 | 显示全部楼层
在类内部定义实例方法参数必须写上self,然后在实例方法内部可以用self代替在类外部创建的具体对象
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-7 20:59:34 | 显示全部楼层    本楼为最佳答案   
因为实例化的对象调用它的方法时,它会把这个实例化对象传给方法的第一个参数,如果没有self这个参数,
python就会报错。
例如说:
  1. class BB:
  2.     def printBB():
  3.         print("no zuo no die")

  4.         
  5. bb = BB()
  6. bb.printBB()
  7. Traceback (most recent call last):
  8.   File "<pyshell#5>", line 1, in <module>
  9.     bb.printBB()
  10. TypeError: printBB() takes 0 positional arguments but 1 was given
复制代码

去掉self, 就会报错了。
你的,就没有报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-6 05:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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