添加方便的静态/类方法,而不删除或破坏现有的实现

2024-03-28 11:59:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经掌握了OOP范式的窍门,我想改进的是制作可扩展和可重用代码的艺术。从理论上讲,我有一个已经被广泛使用的实用程序类的Python库。为了便于使用,我想向特定类添加一些带有相同代码的方便静态方法,但我不想破坏我对该库的现有使用。推荐的实现和命名新类方法的方法是什么?我有几个猜测如下:

1)使用重载方法名来保持清晰?Python不是一个很好的例子,但是在其他语言中,比如Java?例如:

class Cat(object):
    def __init__(self, name):
        self.name = name

    def meow(self):
        meow(self.name)

    @staticmethod
    def meow(name): # <-- Granted, Python doesn't overload method names
        print "{} meowed cutely!".format(name)

2)使用一个不同的,也许语义较少的静态方法名?旧名不能改,所以。。。在我看来,对于大型项目来说,这可能会失控,因为同一方法的静态版本只有一堆非语义名称。示例:

^{2}$

我认为直接复制代码是个坏主意。走哪条路?还是有更好的设计模式?一些我不知道的Python特有的东西?我想确保我的代码在将来不会一文不值;并为将来的项目制作一些可扩展的个人库。在


Tags: 方法代码nameself实用程序def语义理论
1条回答
网友
1楼 · 发布于 2024-03-28 11:59:00

您可以将可选参数和关键字参数添加到函数中,而不会破坏函数的现有用法。例如,可以在末尾添加一个protocol=old参数来选择要使用的行为,在没有显式参数的情况下,旧的行为是默认的。如果您想保持相同的函数名,这是最好的选择,但是如果您多次这样做,它会很快变得笨拙。在

相关问题 更多 >