https://gist.github.com/Kilerd/b0f51e66cc1a874fa450ca6cae98bb6b 以上是 GIST 地址
写的原因:
在一个项目里面,我想类里面的两个元素的值永远保持一样
用法大概是这样的:
class A(Alias):
def __init__(self):
self.a = 1
self.alias("b", "a")
a = A()
print(a.a, a.b)
a.a = 2
print(a.a, a.b)
a.b = 3
print(a.a, a.b)
执行结果是:
1 1
2 2
3 3
同时,支持简单的递归用法:
class B:
a = 1
class C(Alias):
def __init__(self):
self.b = B()
self.alias("a", "b.a")
c = C()
print(c.b.a, c.a)
c.b.a = 2
print(c.b.a, c.a)
c.a = 3
print(c.b.a, c.a)
输出结果
1 1
2 2
3 3
代码没经过认真测试,边缘情况可能会出错,谨慎使用
4
Kilerd OP |
5
mooncakejs 2017-06-23 23:24:15 +08:00 via iPhone
@Kilerd 也许是 java 的习惯,现在 getter setter 用的很爽
|
7
bravecarrot 2017-06-25 00:09:56 +08:00 via iPhone
有点没看懂你的需求?
不就是一个 instance 中有两个属性,不同的名字,指向同一块内存吗,property 正好啊 |
8
kevinkim 2017-06-28 16:53:37 +08:00
用户名为"property" 成功被 @,哈哈
|