作者tsaiminghan (nahgnimiast)
看板Python
标题Re: [问题] @property
时间Thu Sep 1 09:47:02 2022
经过前面网友的提醒,我之前把class的格式看得太死,
该把它想成跟一般函式一样,里面的def也可以在 class中使用
=========================
class A(object):
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
==========================
跟下面是同等的。
==========================
class A(object):
def x(self):
return self._x
x = property(x)
@x.setter
def x(self, value):
self._x = value
==========================
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.216.53.129 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1661996825.A.203.html
1F:推 poototo: 可以这样方便记忆,但观念上建议还是做点区分 09/01 20:32
2F:→ poototo: class内的物件都是在造class过程中会一并建立的成员物件 09/01 20:34
3F:→ poototo: 但def内的变数,只在def执行时才建立 09/01 20:35
4F:推 poototo: 所以你可以对class的成员做存取,inner func就只能走闭包 09/01 20:39
5F:→ poototo: class是建立一个名称空间来管理成员的参照集合,就是api 09/01 20:41
6F:推 poototo: 而且成员中的def,实际上的type是method 09/01 20:55
7F:→ poototo: 调用时的行为跟一般def不一样,後者的type是function 09/01 20:55
8F:推 poototo: inner func的scope可以参考到parent func的scope 09/01 21:10
9F:→ poototo: 但method的scope不行直接参考class下的scope 09/01 21:11
10F:推 poototo: 可是method的参数预设值又可以直接使用class的成员 09/01 21:21
11F:→ tsaiminghan: 谢谢. 你说的说明,对我而言蛮清楚的 09/02 00:55