-
Notifications
You must be signed in to change notification settings - Fork 833
3.2. Decorators
霞飛 edited this page Apr 20, 2023
·
1 revision
这里介绍 module/base/decorators.py 下的装饰器。
让一个函数在特定的设置情况下运行,常用于同一函数在不同服务器间的切换。需要实例拥有 config 属性,且为 AzurLaneConfig 对象。任何继承 ModuleBase 的类都可以使用这个装饰器。
当指定的属性值为 None 时,表示任何情况下均可运行。它的定义应后于其他函数,也就是这个函数要写在最下面。当 config 中的值不满足任何一个装饰器的要求时,显示 warning,并运行最后一个定义的函数.
from module.base.decorator import Config
from module.base.base import ModuleBase
class AnotherModule(ModuleBase):
@Config.when(SERVER='en')
def function(self):
# This method will be called only in EN server
pass
@Config.when(SERVER=None)
def function(self):
# This method will be called in other server
pass
选择的属性不仅限于 SERVER,可以是 AzurLaneConfig 中的任何属性:
# module/config/config.py
DEVICE_CONTROL_METHOD = 'uiautomator2' # ADB, uiautomator2, minitouch
@Config.when(DEVICE_CONTROL_METHOD='minitouch')
def _commission_swipe(self, distance=190):
pass
@Config.when(DEVICE_CONTROL_METHOD=None)
def _commission_swipe(self, distance=300):
pass
也可以选择一个或多个属性:
@Config.when(POOR_MAP_DATA=True, MAP_CLEAR_ALL_THIS_TIME=False)
def battle_function(self):
pass
@Config.when(MAP_CLEAR_ALL_THIS_TIME=True)
def battle_function(self):
pass
@Config.when(MAP_CLEAR_ALL_THIS_TIME=False, POOR_MAP_DATA=False)
def battle_function(self):
pass
缓存属性。用 cached_property 装饰的类属性,只会计算一次。来自 cached_property。
@cached_property
def bug_threshold(self):
return random_normal_distribution_int(55, 105, n=2)
>>> self.bug_threshold
87
>>> self.bug_threshold
87
重新计算属性:
>>> del self.__dict__['bug_threshold']
>>> self.bug_threshold
74
打印函数运行的耗时,这个装饰器在 module/base/timer.py 里。精度约 0.5ms,在调试使用。
@timer
def do_something():
pass
>>> do_something()
do_something: 0.123456789 s
随机执行或者不执行某个函数,可以在测试中模拟模拟器卡顿。
Getting Started
- Installation [EN]
- Installation [CN]
- Installation With Docker [EN]
- Emulator Support [CN]
- FAQ [EN/CN]
- FAQ [JP]
- Troubleshooting [EN]
- Another Installation guide
- Research Filter String [EN]
- Research Filter String [CN]
- Reward Shop Filter String [EN/CN]
- Onepush Configuration [EN]
- Onepush Configuration [CN]
Development
- Perspective [CN]
- Perspective [EN]
- Debug perspective [CN]
- Debug perspective [EN]
- Item Statistics [EN]
- 1. Start
- 2.1. Debugging
- 2.2. Multi-server support
- 3.1. Utils
- 3.2. Decorators
- 3.3. Log
- 3.4. Exception
- 4.1. Detection objects
- 4.2. UI control
- 4.3. OCR
- 4.4. State loop
- 5.1. Local Map
- 5.2. Create globe Map
- 5.3. Globe Map
- 6.1. GUI Option
MISC