【发布时间】:2014-03-06 17:54:29
【问题描述】:
我在这里有一个有趣的请求。假设我有一个名为 Object 的类,它有两个方法,func1() 和 func2()。第二种方法调用 func1(),尽管我希望能够更改 func1() 的函数定义,能够区分从 func2() 内部调用和作为我的 Object 类的独立方法调用,就像这样:
obj = Object()
obj.func1()
我可以简单地创建函数的两个版本(一个私有方法,供 func2() 使用,一个公共方法供用户访问;是的,我知道在 python 中确实没有这样的东西私有的,但按照我认为正常的命名约定,我可以明确表示它只是一个内部函数)。但这需要相当多的冗余,这是我想尽可能避免的事情。有没有人可以推荐做这种事情的机制或策略?
我知道,例如,如果我希望我的整个脚本 object.py 仅作为独立脚本运行(即 - 它不会在另一个脚本的顶部导入)来执行某组代码,我会做:
if __name__ == "__main__":
...
code to run if standalone
...
我想知道类的方法是否有类似的策略。
【问题讨论】:
-
这是不可能的。为什么你觉得你需要这样做?除了创建单独的方法之外,另一种可能性是在函数中添加一个参数,
func2在调用它时可以使用它来指示“内部”使用。 -
诀窍是将冗余代码分解为一个单独的“通用”函数,两者都可以使用。
-
我觉得我需要这样做,因为以某种方式调用,我想产生终端输出,而如果这个函数在内部调用,我希望它放弃打印到终端。
-
在类上设置
debug属性。用self.debug = True,然后打印到终端,否则不打印。 -
@mgilson 实际上,这听起来是个不错的策略。装饰师呢?我可以以某种方式使用它吗?我认为重构是好的,但是这样做需要一些时间。
标签: python function oop methods