我正在编写一个在其__init__
函数中使用某些函数的类,但我不确定在哪里定义这些函数的最佳实践。我通常喜欢先定义__init__
,但如果我需要在其中使用函数/方法,__init__
则需要先定义它。我不想在类外将它定义为它在类外无用,但在__init__
. 什么是正常的约定?
问问题
9388 次
4 回答
14
只需像其他方法一样将方法添加到您的类中
class Test(object):
def __init__(self):
self.hi()
def hi(self):
print "Hi!"
完全没有问题。
虽然Python 样式指南IIRC 中没有提到它,但约定 let__init__
是类中的第一个方法。
于 2012-08-21T11:41:33.237 回答
3
正常的约定确实是放在__init__
其他方法之前。这样做的原因是函数在被调用之前不会被评估。来自Python 文档:
函数定义是一个可执行语句。它的执行将当前本地命名空间中的函数名称绑定到函数对象(函数的可执行代码的包装器)。此函数对象包含对当前全局命名空间的引用,作为调用函数时要使用的全局命名空间。
函数定义不执行函数体;this 仅在调用函数时执行。
于 2012-08-21T11:49:20.840 回答
1
最好将__init__
函数定义为第一个函数,您可以__init__
在其中调用定义的函数。
class A:
def __init__(self):
print self.x()
def x(self):
return 10
于 2012-08-21T11:41:46.810 回答
0
为什么在 init 之后定义方法会很“混乱”?这样想:
当你定义
class MyClass(object):
def __init__(self):
self.something = whatever
self.do_something_else()
def do_something_else(self):
...
__init__
是你的MyClass
类的一个方法,就像do_something
是;它只是当您创建MyClass
. 所以,把__init__
它放在第一位不仅是习惯性的,也是合乎逻辑的。
您的do_something_else
方法不必先定义,因为您在__init__
. 从 的角度来看MyClass
,它是另一种方法。当您创建myclass=MyClass()
实例时,do_something_else
已经定义...
于 2012-08-21T11:56:41.273 回答