zen*_*nna 7 python constructor member
我是从C++背景到python
我一直在声明成员变量并以C++方式设置它们,如下所示:
class MyClass:
my_member = []
def __init__(self,arg_my_member):
self.my_member = arg_my_member
Run Code Online (Sandbox Code Playgroud)
然后我在一些开源代码中注意到,初始声明my_member = []完全被遗漏,只在构造函数中创建.
这显然是可能的,因为python是动态的.
我的问题是,这是首选或Pythonic的做事方式,是否存在优点和缺点?
你这样做的方式意味着你现在将拥有一个"静态"成员和一个同名的"非静态"成员.
class MyClass:
my_member = []
def __init__(self, arg_my_member):
self.my_member = arg_my_member
>>> a = MyClass(42)
>>> print a.my_member
42
>>> print MyClass.my_member
[]
Run Code Online (Sandbox Code Playgroud)