|
|
10鱼币
045-课后题-2-super().__setattr__('counter', 0)
问题:
super().__setattr__('counter', 0) # counter 为什么要加双引号‘’?
不加引号就会报错,我试过不加引号,然后都修改写成这样 self.counter,但还是会报错,
既然都是赋值操作,为什么会报错呢?
super().__setattr__(name, value) # 这里的 name 就不需要加引号呀!
程序代码
- class Counter:
- def __init__(self):
- super().__setattr__('counter', 0) # counter 为什么要加双引号‘’?
- def __setattr__(self, name, value):
- super().__setattr__('counter', self.counter + 1)
- super().__setattr__(name, value) # 这里的 name 就不需要加引号呀!
- def __delattr__(self, name):
- super().__setattr__('counter', self.counter - 1)
- super().__delattr__(name)
复制代码
望大神来解答一下,
1. 引号的问题
2. 为什么不能写成 self.counter
你并没有定义self.counter啊,所以你写self.counter当然不认了。这个地方赋值还不能用等号,所以不能用self.counter = 什么这种形式。
引号这个不用解释吧,如果你不用引号,那么counter就只是一个函数的参数标签而已,而你的init方法里面没有counter这个参数,直接拿出来的话就会报错。
|
最佳答案
查看完整内容
你并没有定义self.counter啊,所以你写self.counter当然不认了。这个地方赋值还不能用等号,所以不能用self.counter = 什么这种形式。
引号这个不用解释吧,如果你不用引号,那么counter就只是一个函数的参数标签而已,而你的init方法里面没有counter这个参数,直接拿出来的话就会报错。
|