参数定义需注意!!!变量前要有下划线
Topic source因为是使用@property装饰器的时候: 本来是外部函数的def set_width(self),为了符合题意,即,将width绑定给实例s,将来可以这样用s.width 所以,在装饰器内,def width必然得这么写,不然就实现不了s.width的用法了。 所以,在装饰器内部函数的变量写法上,必须得和def width中的函数名width有所区分,写成:self._width。 否则,如果写成self.width就乱套了。
再仔细观察廖老大本篇文章的上半部分,也就是没讲@property之前的代码,其实是为了 讲@property做铺垫的,所以里面都加了小横线,但是,如果不用@property,其实那里的部分的小横线是可以省略的。
我觉得在这里下划线仅仅是为了区别。我试过了,有装饰器的时候,self后面的变量名,只要不和def后面的冲突就好。所以,我觉得def后面所跟着的变量是为了给子类的变量,而self后面的变量则是装饰器内部所需要的变量,只是在装饰器内部计算时需要的变量。这两个似乎完全不冲突。不知道对不对。。。
- 1
阿奇奇奇奇奇奇奇奇