在我的代码中,我都使用python这样的“静态”类: curStatus = StaticClass.getStat()
其中
class StaticClass:
@staticmethod
def getStat () -> str:
return "noSimulate"
但是现在我有一个重构问题,有时SIMULATE是TRUE或FALSE
SIMULATE: bool = false
如果Simulate为true,我希望staticmethod.getStat()是不同的方法。 但是我只想检查一次SIMULATE并使用多态来完成其余的工作。
&我不想重构整个代码库。
如何仅通过一次检查SIMULATE来更改StaticClass方法?
答案 0 :(得分:0)
我使用了以下信息:python3-patterns
并创建了这两个.py文件: 测试多态性
# https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Factory.html
SIMULATE:bool = True
# class myBase(object):
class myBase:
@staticmethod
def factory(sim:bool) :
return yesSim() if sim else myBase()
@staticmethod
def getDroneStatus() -> str:
print("myBase.getDroneStatus()")
return "UNITIALIZED! FAIL!!"
@staticmethod
def getStaticStatus() -> str:
print("myBase.getStaticStatus()")
return "UNITIALIZED! FAIL!!"
class yesSim(myBase):
@staticmethod
def getDroneStatus() -> str:
return "yesSim"
GSCRAMtcp = myBase.factory(SIMULATE)
if __name__ == '__main__':
myTCP = myBase.factory(SIMULATE)
print(myTCP.getStaticStatus())
print(myTCP.getDroneStatus())
和此测试文件:
from Testing.polymorphism.testPolymorph import GSCRAMtcp
if __name__ == '__main__':
print(GSCRAMtcp.getDroneStatus())
print(GSCRAMtcp.getStaticStatus())