Python - How to return a different value when using a class 'get' method?
本问题已经有最佳答案,请猛点这里访问。
我想覆盖类中变量的get方法。(我不知道该如何解释。)
我试过在谷歌上搜索,但没有什么能真正帮到我。
我的代码:
1 2 3 4 | class Class(): self.foo = ['foo','bar'] print(Class().foo) |
我想这样做,它将打印出默认的
有什么可以添加到代码中使其成为那样的吗?
您可以覆盖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Thingy: def __init__(self): self.data = ['huey', 'dewey', 'louie'] self.other = ['tom', 'jerry', 'spike'] def __getattribute__(self, attr): if attr == 'data': return ' '.join(super().__getattribute__(attr)) else: return super().__getattribute__(attr) print(Thingy().data) print(Thingy().other) |
号
输出:
1 2 | huey dewey louie ['tom', 'jerry', 'spike'] |
python 2版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Thingy(object): def __init__(self): self.data = ['huey', 'dewey', 'louie'] self.other = ['tom', 'jerry', 'spike'] def __getattribute__(self, attr): if attr == 'data': return ' '.join(super(Thingy, self).__getattribute__(attr)) else: return super(Thingy, self).__getattribute__(attr) print(Thingy().data) print(Thingy().other) |
。
注意,使用覆盖
事实上,几乎可以肯定有一种不那么可怕的方法,但我现在想不起来。
您可能希望使用
1 2 3 4 5 6 7 8 9 10 | class Class: _foo = ['foo', 'bar'] @property def foo(self): return ' '.join(self._foo) print(Class().foo) # prints: foo bar |