|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大神,最近学到类这一块有点晕,概念性的东西有点转不太过弯来。下面三个例子,有三个问题:
1. 例子一和例子三对比: 例子三报错的原因是因为构造函数里暂时先给了形参x, 但是这个形参还需要与self 实例赋值,且self.x 必须在左边??
2. 例子一和例子二对比: 为什么o集合前面必须要加Stack. ,这个o 不是已经是类属性了么。。。 还是因为我理解这一块有点类似闭包的nonlocal机制,在__init__里面需要修改类属性也必须要在类属性变量名前面加呼叫器类.
3. 总上,我的理解就是常见的大部分用得着的都是实例属性,这个类属性如果在方法里使用或者修改都需要加类. 去呼叫它,而实例属性用起来更加的容易修改也便于理解也跟实例有着类似一一对应的关系(可以重复)?
不知道这个理解对不对。。。
例子一:
class Stack:
o = []
def __init__(self,x):
self.x = x
Stack.o.append(self.x)
a = Stack('f')
b = Stack('u')
print(b.o)
例子二:
class Stack:
o = []
def __init__(self,x):
self.x = x
o.append(self.x)
a = Stack('f')
b = Stack('u')
print(b.o)
例子三:
class Stack:
o = []
def __init__(self,x):
o.append(self.x)
a = Stack('f')
b = Stack('u')
print(b.o)
对,你把self看成实例化后的变量名字就对了。self是约定成俗的写法
|
|