中文数字/数位字符 每个字符除繁简体外还有一个额外的大写字符 e.g. '陆' 和 '陸'
| 420 | |
| 421 | |
| 422 | class ChineseNumberUnit(ChineseChar): |
| 423 | """ |
| 424 | 中文数字/数位字符 |
| 425 | 每个字符除繁简体外还有一个额外的大写字符 |
| 426 | e.g. '陆' 和 '陸' |
| 427 | """ |
| 428 | |
| 429 | def __init__(self, power, simplified, traditional, big_s, big_t): |
| 430 | super(ChineseNumberUnit, self).__init__(simplified, traditional) |
| 431 | self.power = power |
| 432 | self.big_s = big_s |
| 433 | self.big_t = big_t |
| 434 | |
| 435 | def __str__(self): |
| 436 | return "10^{}".format(self.power) |
| 437 | |
| 438 | @classmethod |
| 439 | def create(cls, index, value, numbering_type=NUMBERING_TYPES[1], small_unit=False): |
| 440 | if small_unit: |
| 441 | return ChineseNumberUnit( |
| 442 | power=index + 1, |
| 443 | simplified=value[0], |
| 444 | traditional=value[1], |
| 445 | big_s=value[1], |
| 446 | big_t=value[1], |
| 447 | ) |
| 448 | elif numbering_type == NUMBERING_TYPES[0]: |
| 449 | return ChineseNumberUnit( |
| 450 | power=index + 8, |
| 451 | simplified=value[0], |
| 452 | traditional=value[1], |
| 453 | big_s=value[0], |
| 454 | big_t=value[1], |
| 455 | ) |
| 456 | elif numbering_type == NUMBERING_TYPES[1]: |
| 457 | return ChineseNumberUnit( |
| 458 | power=(index + 2) * 4, |
| 459 | simplified=value[0], |
| 460 | traditional=value[1], |
| 461 | big_s=value[0], |
| 462 | big_t=value[1], |
| 463 | ) |
| 464 | elif numbering_type == NUMBERING_TYPES[2]: |
| 465 | return ChineseNumberUnit( |
| 466 | power=pow(2, index + 3), |
| 467 | simplified=value[0], |
| 468 | traditional=value[1], |
| 469 | big_s=value[0], |
| 470 | big_t=value[1], |
| 471 | ) |
| 472 | else: |
| 473 | raise ValueError( |
| 474 | "Counting type should be in {0} ({1} provided).".format( |
| 475 | NUMBERING_TYPES, numbering_type |
| 476 | ) |
| 477 | ) |
| 478 | |
| 479 |