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
就可以了。