|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 TJBEST 于 2020-1-3 18:10 编辑
对于一般的类 其静态函数(不含self)的函数是可以被对象调用的,但是会将自己也传入参数,我测试了一下
- class A:
- def __init__(self,x):
- self.x = x
- def new(x):
- a = A(x)
- return a
- >>> a =A(2)
- >>> a.x
- 2
- >>> b = a.new(4)
- Traceback (most recent call last):
- File "<pyshell#12>", line 1, in <module>
- b = a.new(4)
- TypeError: new() takes 1 positional argument but 2 were given
复制代码
也就是说 b = a.new(4)等价于 b = A.new(a,4)。我自己的例子又测试,b = a.new()就没报错 且b.x就是 对象a。
也就是我理解的 b = a.new() 等价于 b = A.new(a)是正确的。但是为什么dict.fromkeys(seq,value)和
其实例对象dict1的 dict1.fromkeys(seq,value)参数却没有这个现象 其参数没问题dict1.fromkeys(seq,value)并不等价于 dict(dict1,seq,value)为何?
dict1.fromkeys(seq,value)没有传入dict1。
本帖最后由 zltzlt 于 2020-1-3 18:13 编辑
fromkeys 是静态方法,使用了 @staticmethod 装饰器,不会对原字典产生影响,也没有 self 参数。
|
|