鱼C论坛

 找回密码
 立即注册
查看: 3131|回复: 6

[已解决]Python的类的self参数问题

[复制链接]
发表于 2017-12-15 00:01:31 | 显示全部楼层 |阅读模式

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

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

x
>>> class Ball:
        def setname(name):
                self.name = name
                print(self.name)

                
>>> a = Ball()
>>> b = Ball()
>>> a.setname('a')
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    a.setname('a')
TypeError: setname() takes 1 positional argument but 2 were given
>>> b.setname('b')
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    b.setname('b')
TypeError: setname() takes 1 positional argument but 2 were given
为什么缺少self参数后会报这样的错误?
最佳答案
2017-12-15 11:04:32
py大神 发表于 2017-12-15 10:11
还有它为什么说我传递了两个位置参数?

任何一个类对象调用函数的时候都默认有一个self参数
你写a.setname('a')除了‘a',还有self
但是你的函数定义中没有self,所以报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-12-15 00:27:30 | 显示全部楼层
还有为什么要初始化对象?__init__方法是如何初始化对象的?他的工作过程是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-15 08:57:09 | 显示全部楼层
没有self,就不知道你的name要到底传递给哪个对象
self指向了当前调用的这个对象,比如a.setname('a'),如果有self,那么这个self就是指向a的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-15 10:10:31 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-12-15 08:57
没有self,就不知道你的name要到底传递给哪个对象
self指向了当前调用的这个对象,比如a.setname('a'),如 ...

还有为什么要初始化对象?__init__方法是如何初始化对象的?他的工作过程是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-15 10:11:25 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-12-15 08:57
没有self,就不知道你的name要到底传递给哪个对象
self指向了当前调用的这个对象,比如a.setname('a'),如 ...

还有它为什么说我传递了两个位置参数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-15 11:04:32 | 显示全部楼层    本楼为最佳答案   
py大神 发表于 2017-12-15 10:11
还有它为什么说我传递了两个位置参数?

任何一个类对象调用函数的时候都默认有一个self参数
你写a.setname('a')除了‘a',还有self
但是你的函数定义中没有self,所以报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-15 11:05:38 | 显示全部楼层
py大神 发表于 2017-12-15 10:10
还有为什么要初始化对象?__init__方法是如何初始化对象的?他的工作过程是什么?

python中初始化可以什么都不做
其他语言,中初始化的时候会分配内存空间,当你申明一个对象的时候,系统需要知道它到底占多大的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 12:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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