在python中别名方法名称的最佳方法是什么?

use*_*965 6 python design-patterns

嗨,我写了以下代码:

class Car:
  def __init__(self):
    self._create_aliases()

  def take_to_repair_shop(self):
     pass

  def drive_to_the_beach(self):
     pass

  def _create_aliases(self):
     Car.repair = Car.take_to_repair_shop
     Car.beach = Car.drive_to_the_beach
Run Code Online (Sandbox Code Playgroud)

我希望用户可以选择使用更长,更清晰的名称或更短的名称.我做_create_aliases了一个实例方法,以便它可以被覆盖.

这有什么问题吗?这是一个很好的设计模式吗?

fal*_*tru 7

你不需要这样做__init__:

class Car:

    def take_to_repair_shop(self):
        pass

    def drive_to_the_beach(self):
        pass

    repair = take_to_repair_shop # <---
    beach = drive_to_the_beach   # <---
Run Code Online (Sandbox Code Playgroud)

例:

>>> car = Car()
>>> car.repair()
>>> car.take_to_repair_shop()
>>>
Run Code Online (Sandbox Code Playgroud)

  • 您可以稍后执行:`del Car.repair`,或在子类中:`repair=None` 以摆脱别名 (2认同)