鱼C论坛

 找回密码
 立即注册
查看: 5781|回复: 5

[已解决]问一下在类中定义函数的时候为什么第一个参数一定是self?

[复制链接]
发表于 2016-2-1 00:08:37 | 显示全部楼层 |阅读模式

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

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

x
为什么要把self作为第一个参数呢?
调用的时候为什么又不用传入self的值?
比如
class ball:
        def setName(self,name):
                self.name = name

a = ball()
a.setName('A')

为什么setName只传入一个参数就行?

self具体作用又是什么?
最佳答案
2016-3-7 09:22:32
self代表a,在编写类时无法预知实例化的名字,所以要写成self。
这样写,可能会更清楚些。直接在类对象中给a赋值。
  1. >>> class Ball:
  2.         def setName(self, name):
  3.                 self.name = name

  4.                
  5. >>> a = Ball()
  6. >>> Ball.setName(a, 'A')
  7. >>> a.name
  8. 'A'
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-1 08:22:12 | 显示全部楼层
对象实例化后代表对象本身,就是a = Ball('A'),此时其实self就是a
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-7 08:46:59 | 显示全部楼层
那为什么又要写self.name=name 来在此多写一呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-7 09:22:32 | 显示全部楼层    本楼为最佳答案   
self代表a,在编写类时无法预知实例化的名字,所以要写成self。
这样写,可能会更清楚些。直接在类对象中给a赋值。
  1. >>> class Ball:
  2.         def setName(self, name):
  3.                 self.name = name

  4.                
  5. >>> a = Ball()
  6. >>> Ball.setName(a, 'A')
  7. >>> a.name
  8. 'A'
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-7 10:55:47 | 显示全部楼层
冬雪雪冬 发表于 2016-3-7 09:22
self代表a,在编写类时无法预知实例化的名字,所以要写成self。
这样写,可能会更清楚些。直接在类对象中 ...

噢,明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-1 22:32:48 | 显示全部楼层
冬雪雪冬 发表于 2016-3-7 09:22
self代表a,在编写类时无法预知实例化的名字,所以要写成self。
这样写,可能会更清楚些。直接在类对象中 ...

厉害 感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 12:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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