Python 类继承时覆盖类属性的问题

查看 100|回复 8
作者:plko345   
class Base(object):
    PRODUCT = 1
    CLIENT = PRODUCT * 10
class Base1(Base):
    PRODUCT = 2
print(Base.CLIENT)
print(Base1.CLIENT)
请问 Base1 的 CLIENT 要怎么才能变成 20, 不重复写 CLIENT 的表达式情况下

Client, base1, base, product

yingxiangyu   
没办法
Leviathann   
改成 getter
wkj89   
2 楼说的对 覆写__attr__相关函数
plko345
OP
  
@Leviathann
@wkj89
是改为 `print(getattr(Base1, 'CLIENT'))` 这样吗? 试了不行, 应该是我理解错了吧
wkj89   
覆写__getattr__ 函数 但是没啥意义 还不如重复定义 client
error451   
这么搞就不符合类设计的逻辑
类静态变量,你却要求他是可变的, 为什么要这样呢?
XIVN1987   
``` 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)
```
plko345
OP
  
@error451 恩, 我想应该是我的设计有问题, 我把这部分移到类外部处理试试
您需要登录后才可以回帖 登录 | 立即注册

返回顶部