关于用Getter装饰器的使用问题
相关代码:
class test():
pass
set = ""
@property
def test_pass(self):
if self.set == "first":
print('pass')
return self.set
@test_pass.setter
def test_pass(self,value):
self.set = value
@test_pass.getter
def test_pass(self):
if self.set == "":
print("您未初始化set的值")
else:
return self.set
test_run = test()
test_run.test_pass = "first"
print(test_run.test_pass)
问题描述:
使用定义Getter函数之后调用被定义成属性的方法test_pass之后发现不再使用如下的的判断函数了
@property
def test_pass(self):
if self.set == "first":
print('pass')
return self.set
麻烦老师讲解一下原因以及是否存在解决办法
10
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小猿
2023-11-01 18:38:52
同学,你好!执行print(test_run.test_pass)时,因设置了@test_pass.getter下的test_pass方法,取值时会覆盖之前的@property 定义的 test_pass方法,所以不会执行@property下的test_pass方法。同学可以不设置getter,便会输出 pass、first 这样的结果,参考代码如下:
class test(): pass set = "" @property def test_pass(self): if self.set== "first": print('pass') return self.set @test_pass.setter def test_pass(self, value): self.set = value test_run = test() test_run.test_pass = "first" print(test_run.test_pass)
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星