如果成员变量没有在__init__中被初始化,那么就得考虑别的函数的调用该变量的顺序问题。如果顺序出错了,很容易用到未初始化的成员变量。
这个在c++和java中都没有吧。
动态语言最大的问题是不是就是对入参一无所知,必须要看调用改函数的实参才能知道实际意义。
这个在c++和java中都没有吧。
动态语言最大的问题是不是就是对入参一无所知,必须要看调用改函数的实参才能知道实际意义。
会不会像perl那样,写完之后10分钟就不知道自己写了什么了?
所以 pycharm 当你在 __init__() 之外的方法里面赋值新属性的时候会报一个警告。
灵活性是个双刃剑。你看到了不好的地方,但是有时候可以这么写:
def do_something(self):
if not hasattr(self, "tmpvar"):
self.tmpvar = []
self.tmpvar.append(self.create_some_object())
这么干的时候程序员应该保证除了这个方法,其它方法都不使用临时定义的这个属性。