鱼C论坛

 找回密码
 立即注册
查看: 3883|回复: 2

[已解决]045-课后题-2-super().__setattr__('counter', 0)

[复制链接]
发表于 2016-5-2 22:00:58 | 显示全部楼层 |阅读模式
10鱼币
045-课后题-2-super().__setattr__('counter', 0)
问题:
super().__setattr__('counter', 0)   # counter 为什么要加双引号‘’?
不加引号就会报错,我试过不加引号,然后都修改写成这样 self.counter,但还是会报错,
既然都是赋值操作,为什么会报错呢?
super().__setattr__(name, value)   # 这里的 name 就不需要加引号呀!

程序代码
  1. class Counter:
  2.     def __init__(self):
  3.         super().__setattr__('counter', 0)  # counter 为什么要加双引号‘’?
  4.     def __setattr__(self, name, value):
  5.         super().__setattr__('counter', self.counter + 1)
  6.         super().__setattr__(name, value)    # 这里的 name 就不需要加引号呀!
  7.     def __delattr__(self, name):
  8.         super().__setattr__('counter', self.counter - 1)
  9.         super().__delattr__(name)
复制代码


望大神来解答一下,
1. 引号的问题
2. 为什么不能写成   self.counter
最佳答案
2016-5-2 22:00:59
你并没有定义self.counter啊,所以你写self.counter当然不认了。这个地方赋值还不能用等号,所以不能用self.counter = 什么这种形式。
引号这个不用解释吧,如果你不用引号,那么counter就只是一个函数的参数标签而已,而你的init方法里面没有counter这个参数,直接拿出来的话就会报错。

最佳答案

查看完整内容

你并没有定义self.counter啊,所以你写self.counter当然不认了。这个地方赋值还不能用等号,所以不能用self.counter = 什么这种形式。 引号这个不用解释吧,如果你不用引号,那么counter就只是一个函数的参数标签而已,而你的init方法里面没有counter这个参数,直接拿出来的话就会报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-5-2 22:00:59 | 显示全部楼层    本楼为最佳答案   
你并没有定义self.counter啊,所以你写self.counter当然不认了。这个地方赋值还不能用等号,所以不能用self.counter = 什么这种形式。
引号这个不用解释吧,如果你不用引号,那么counter就只是一个函数的参数标签而已,而你的init方法里面没有counter这个参数,直接拿出来的话就会报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-6 09:46:31 | 显示全部楼层
望大神来帮忙解答
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-20 22:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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