Skip to main content
 首页 » 编程设计

python之类设计: methods that share a lot of the same code

2025年05月04日15txw1958

此时我想创建一个有两个方法的类(我也希望能够 明显地改变类(class))。

class ogrGeo(object): 
 
    def __init__(self): 
        pass 
 
    def CreateLine(self, o_file, xy): 
        #lots of code 
 
 
    def CreatePoint(self, o_file, xy): 
        # lot's of the same code as CreateLine(),  
        # only minor differences 

保持事物干净并重复 尽可能少的代码我正在寻求一些建议。这两个方法 CreateLine() 和 CreatePoint() 共享很多代码。减少冗余: 是否应该定义两种方法都可以调用的第三种方法? 在这种情况下你仍然可以打电话 o = ogrGeo() o.CreateLine(...) o.CreatePoint(...) 分开。 还是应该将它们合并为一种方法?是否还有其他我没有考虑过或一无所知的解决方案?

已经感谢您的任何建议。

请您参考如下方法:

是否应该将这些方法合并为一个是 API 设计的问题。如果这些功能有不同的用途,那么您可以将它们分开。如果客户端代码可能遵循该模式,我会合并它们

if some_condition: 
    o.CreateLine(f, xy) 
else: 
    o.CreatePoint(f, xy) 

但除此之外,不要合并。相反,将公共(public)代码重构为私有(private)方法,如果公共(public)代码不涉及 self,甚至重构为独立函数。 Python 在语言中没有内置“私有(private)方法”的概念,但是以 _ 开头的名称将被识别为私有(private)方法。