由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个Python getter setter的问题
相关主题
问个Python的问题为什么java要用setter和getter
子类的assignment operator 怎么访问父类的private member有没有根据 model 类自动生成 html form的工具?
C++: friend function大家都用那跟手指敲 - + = [ ] ;
c++ 设计问题求助Who can help explain setter and getter?
请教C#里property的意义scala的ide版本号已经上3冲4了
请教一个C++问题学scala发现一个有趣现象
问一个简单的:setter 和getter有什么用处?golang里面 函数received type关于指针和非指针有什么难的。
goodbug vs neverlearnGetter and setter methods are evil
相关话题的讨论汇总
话题: self话题: def话题: 20话题: python话题: __
进入Programming版参与讨论
1 (共1页)
N***e
发帖数: 61
1
01 class Test1:
02 def __init__(self, x):
03 self.x=x
04 @property
05 def x(self):
06 return self.__x
07 @x.setter
08 def x(self, x):
09 self.__x=x
10 t=Test1(10)
11 t.__x=20
12 print(t.x)
13 print(t.__x)
14
15 class Test2:
16 def __init__(self, x):
17 self.__x=x
18 @property
19 def x(self):
20 return self.__x
21 @x.setter
22 def x(self, x):
23 self.__x=x
24 t=Test2(10)
25 t.__x=20
26 print(t.x)
27 print(t.__x)
输出结果为:
10
20
10
20
为什么不是:
20
20
20
20

如果我理解正确的话,第3行 self.x=x因该是call了setter x(self, x), 而不是直接
建立了一个variable x。
N***e
发帖数: 61
2
好吧,问题解决了。不因该用double underscore。
但是还是不明白为什么用了dunder结果回事10,20,10,20
N***e
发帖数: 61
3
我就是为了测试name mangling。但是现在明白鸟。
Python只mangle class definition中的 dunder variable name,之外的就直接当作
variable name了。
在document里面招到了原话:
This mangling is done without regard to the syntactic position of the
identifier, as long as it occurs within the definition of a class.
m*****n
发帖数: 3575
4
__有什么特殊作用来着?
1 (共1页)
进入Programming版参与讨论
相关主题
Getter and setter methods are evil请教C#里property的意义
有人用lombok吗?请教一个C++问题
老年工程师转行遇到下马威问一个简单的:setter 和getter有什么用处?
请教个Bloomberg 的 C++ 题目goodbug vs neverlearn
问个Python的问题为什么java要用setter和getter
子类的assignment operator 怎么访问父类的private member有没有根据 model 类自动生成 html form的工具?
C++: friend function大家都用那跟手指敲 - + = [ ] ;
c++ 设计问题求助Who can help explain setter and getter?
相关话题的讨论汇总
话题: self话题: def话题: 20话题: python话题: __