2

我只写了几个星期的 Python 代码,所以我还在摸索这片土地的位置。但是,假设我有一个方法可以由“用户”偶尔调用,并且在内部大量使用(即,在调用之前已经检查了参数)。这是我目前正在做的事情:

#The method the 'user' should call:
def do_something(self, arg1, arg2, arg3):
    #write code to do error checking on arg1, agr2, arg3
    #raise exceptions, return codes, etc: depends on whether you are an explicit lover
    #or an implicit lover, it seems. :-)
    ... error checking code here...
    #Now call the 'brother' method that does the real work.
    return self._do_something(self, arg1, arg2, arg3, arg3)

#The method other private methods should call with already validated parameters
def _do_something(self, arg1, arg2, arg3, arg3):
    #don't do error checking on the parameters. get to work...
    ... do what you do...
    return whatever you're supposed to return

这在我看来是合乎逻辑的。有没有更好的 Python 方式来做到这一点?

保罗

4

4 回答 4

2

那也行。但是,您的代码中对“brother”方法的调用是错误的。你应该这样做:

# Now call the 'brother' method that does the real work.
return self._do_something(arg1, arg2, arg3, arg3)

也就是说,您应该“通过”自引用来调用它,因为它是一个对象方法而不是全局函数。

于 2009-10-27T16:09:52.217 回答
0

python 中没有对私有成员的“真正”支持,但是将成员指示为私有的pythonic 方法是使用两个前导下划线。在你的情况下,__do_something.

有关更多详细信息,请参阅python.org - 类

于 2009-10-27T16:07:47.713 回答
0

好吧,除非错误检查代码非常昂贵,否则我只有一种方法,它总是进行错误检查。它可能会重复一些检查,但它确实为您提供了更多的安全性,如果有人从您的类继承,它可能会派上用场。

如果以后您需要性能,您可以随时缓存结果或执行其他操作。

于 2009-10-27T16:09:59.407 回答
-1

我只是在自己学习python(并享受它),但我认为这就是这样做的方法。但是,私有方法应该有两个下划线,并且像“self.__do_something()”一样调用。

于 2009-10-27T16:09:11.597 回答