我一直在编写Python代码只有几个星期,所以我还在弄清楚这块土地的位置。但是,假设我有一个方法可以偶尔由'用户'调用,也可以在内部使用HEAVILY(即,在调用之前已经检查过参数)。以下是我目前正在做的事情:
#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-ish方法来做到这一点?
保
答案 0 :(得分:2)
没关系。但是,对您的代码中调用“兄弟”方法是错误的。你应该这样做:
# Now call the 'brother' method that does the real work.
return self._do_something(arg1, arg2, arg3, arg3)
也就是说,你应该通过自引用来调用它,因为它是一个对象方法,而不是一个全局函数。
答案 1 :(得分:0)
python中没有对私有成员的“真实”支持,但将成员指定为私有的pythonic方法是使用两个前导下划线。在您的情况下,__do_something
。
有关详细信息,请参阅python.org - classes
答案 2 :(得分:0)
好吧,除非错误检查代码非常昂贵,否则我只有一个方法,它总是进行错误检查。它可能会重复一些检查,但它确实为您提供了更多的安全性,如果有人从您的班级继承,它可能会派上用场。
如果以后需要性能,您可以随时缓存结果或执行其他操作。
答案 3 :(得分:-1)
我只是自己学习python(并享受它),但我认为这是做到这一点的方法。 但是,私有方法应该有两个下划线,并称为'self .__ do_something()'。