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" 成功被 @,哈哈 |