我是Python的新手,只是想更好地理解某些事物背后的逻辑。
我为什么要这样写(默认变量在中__init__
):
class Dawg:
def __init__(self):
self.previousWord = ""
self.root = DawgNode()
self.uncheckedNodes = []
self.minimizedNodes = {}
def insert( self, word ):
#...
def finish( self ):
#...
代替这个:
class Dawg:
previousWord = ""
root = DawgNode()
uncheckedNodes = []
minimizedNodes = {}
def insert( self, word ):
#...
def finish( self ):
#...
我的意思是-为什么我需要使用__init__
->如果可以轻松地将默认变量直接添加到类中呢?
当您在Class中创建变量时,它们就是Class变量(它们对于该类的所有对象都是通用的),当您在__init__
其中初始化变量时,self.variable_name = value
它们将按实例创建,称为实例变量。
例如,
class TestClass(object):
variable = 1
var_1, var_2 = TestClass(), TestClass()
print var_1.variable is var_2.variable
# True
print TestClass.variable is var_1.variable
# True
由于变量是类变量,因此is
运算符的取值为True
。但是,对于实例变量,
class TestClass(object):
def __init__(self, value):
self.variable = value
var_1, var_2 = TestClass(1), TestClass(2)
print var_1.variable is var_2.variable
# False
print TestClass.variable is var_1.variable
# AttributeError: type object 'TestClass' has no attribute 'variable'
而且,您不能仅使用类名来访问实例变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句