class Base(object):
PRODUCT = 1
CLIENT = PRODUCT * 10
class Base1(Base):
PRODUCT = 2
print(Base.CLIENT)
print(Base1.CLIENT)
请问 Base1 的 CLIENT
要怎么才能变成 20, 不重复写 CLIENT 的表达式情况下
1
yingxiangyu 318 天前
没办法
|
2
Leviathann 318 天前
改成 getter
|
3
wkj89 318 天前
2 楼说的对 覆写__attr__相关函数
|
4
plko345 OP |
5
wkj89 318 天前
覆写__getattr__ 函数 但是没啥意义 还不如重复定义 client
|
6
error451 318 天前
这么搞就不符合类设计的逻辑
类静态变量,你却要求他是可变的, 为什么要这样呢? |
7
XIVN1987 318 天前
``` python
class Base(object): PRODUCT = 1 @property def CLIENT(self): return self.PRODUCT * 10 class Base1(Base): PRODUCT = 2 print(Base().CLIENT) print(Base1().CLIENT) ``` |
10
Alias4ck 318 天前 1
可以用描述器解决你的问题
``` class ClientDescriptor: def __get__(self, instance, owner): return owner.PRODUCT * 10 class Base(object): PRODUCT = 1 CLIENT = ClientDescriptor() class Base1(Base): PRODUCT = 2 ``` |