class app():
def f(self,id):
return type(id)
此时需要实例化 app
a=app()
a.f(1)
<class 'int'>
如不进行实例化无法直接 app.f()
再看下面的
`
class app():
def f(self,id,*arg):
if type(id)==int:
return id,arg
else:
return type(id)app.f(1,'aa')
<class 'str'>
这里 id 竟然被转换成了 str 类型,虽然直接被调用了,但类型怎么会这样了呢
如果进行实例化, id 就是 int 类型
a=app()
a.f(1,'a')
(1, ('a',))
`
怎么理解 self ,和后面参数的类型变化?
请教了
1
lxy42 2015-12-09 00:02:37 +08:00
建议看看 Python 文档或基础教程中关于类的 bind method 和 unbind method
|
2
lxy42 2015-12-09 00:14:05 +08:00 1
以及 static method, class method 。回到你的问题,在类中定义的方法“默认”都是实例方法,只能通过实例调用,如你定义的 f(self, id),只能通过实例 a 调用,执行 a.f(1),这里 self 参数等于 a , id 等于 1 。在你第二个例子中, app. f(1,'aa'),这是直接用类调用实例方法,所以 self 等于 1 , id 等于'aa',arg 等于空列表。
|
3
dsp2138 OP |