Python—重写下划线方法的最佳方法(单3;)?

Python—重写下划线方法的最佳方法(单3;)?,python,inheritance,overriding,Python,Inheritance,Overriding,所以我的理解是像\u privateMethod()这样的方法通常不应该直接访问/调用。但是,由于需要实现的原因,我需要重写继承的PrivateMethodClass,如下所示: class MyClass(PrivateMethodClass): def _privateMethod(): #add additional functionality 我必须扩展此方法的功能,但我的问题是,这是一种不好的做法吗?如果是,有什么方法可以更干净/更具pythonic/更

所以我的理解是像
\u privateMethod()
这样的方法通常不应该直接访问/调用。但是,由于需要实现的原因,我需要重写继承的
PrivateMethodClass
,如下所示:

class MyClass(PrivateMethodClass): 

   def _privateMethod(): 
        #add additional functionality 

我必须扩展此方法的功能,但我的问题是,这是一种不好的做法吗?如果是,有什么方法可以更干净/更具pythonic/更好

如果需要重写“private”方法,请重写它。除了不重写“private”方法之外,没有一种方法可以使它干净。这取决于方法的特定功能以及是否有其他方法提供该功能。可能您必须重写所有调用
\u privateMethod
@Graeme的方法谢谢您的输入,但是为什么我必须重写所有调用
\u privateMethod
的方法,只要我保持方法签名相同?@ocean800,我应该稍微更正一下,您可以覆盖(直接或间接)调用
\u privateMethod
的所有非私有方法。这是避免实际重写
\u privateMethod
的一种方法。取决于工作量有多大,这可能不是一个好主意。@海洋800也考虑了下划线约定的原因。实际上,该方法可能会在类/模块的不同版本之间更改,而不会发出警告。如果您只打算使用该类的一个版本,或者接受这是将来必须更改的内容,那么重写您的
\u privateMethod
就可以了。