关于Python的__init__问题

核动力蜗牛Killua 2010-07-20 01:12:55
小弟最近学习Python,学到类的时候有点疑惑,是不是Python不支持构造函数的重载?每次我编写多个init的时候,就一直按照最后一个来进行,也就是说被覆盖了

希望高手指点下
...全文
343 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphiwcdj 2010-07-20
  • 打赏
  • 举报
回复
可以引用实参名赋值
————
确实不错,很强大
I_NBFA 2010-07-20
  • 打赏
  • 举报
回复
python不支持直接重载, 但利用默认参数可以实现相同效果.
举个例子:

class Test(object):
def __init__(self, a = None, b = None, c = None):
self.a = a;
self.b = b;
self.c = c;
print a, b, c;

t1 = Test();
t2 = Test(1, 2, 3);
t3 = Test(1, 2);
t4 = Test(c = 3);
t5 = Test(1, c = 3);


其实python的重载更为强大灵活, 因为可以引用实参名赋值.
delphiwcdj 2010-07-20
  • 打赏
  • 举报
回复
学习...
angel_su 2010-07-20
  • 打赏
  • 举报
回复
python一个函数可以接受不确定个数的参数,所以要在函数参数定义上做文章...
看看文档Tutorial 4.7. More on Defining Functions
cchb1986 2010-07-20
  • 打赏
  • 举报
回复
__init__可以自定义,不能重载吧
iambic 2010-07-20
  • 打赏
  • 举报
回复
Python不是不支持构造函数重载,是根本不支持重载。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧