|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 markfzc 于 2017-11-5 16:29 编辑
- #45课,属性访问
- #p12_4.py
- class Rectangle:
- def __init__(self, width = 0, height = 0):
- self.width = width
- self.height = height
- def __setattr__(self, name, value): # 这个方法的值不是很理解
- if name == 'square':
- self.width = value
- self.height = value
- else:
- self.name = value #这里的name = value 不是很理解
- def getArea(self):
- return self.width * self.height
- # 运行时输入 r = Rectangle(4, 5)
复制代码
运行是出现了死循环。这里的name是什么,我觉得self是r
setattr的作用是修改attr.
用法是 setattr(对象, 要替代的键, 用来替代的值)
所以__setattr__中 name = value的意思就是, 用value替换name的值.
文中的代码要正常运行可以改成:
11. self.__dict__[self.width] = value
12. self.__dict__[self.height] = value
.
.
14. self.__dict__[name] = value
|
|