python 类的参数报错“为定义”,为什么?

提示错误是port_no没有定义……奇怪的是,所有的参数都是实参,一定要名字一样!我想要形参啊!求解!... 提示错误是port_no 没有定义……奇怪的是,所有的参数都是实参,一定要名字一样!我想要形参啊!求解! 展开
 我来答
Robeanithe
2013-09-25 · TA获得超过172个赞
知道答主
回答量:33
采纳率:0%
帮助的人:40.6万
展开全部
实参是函数调用时候传入的参数。形参是声明时候写的参数。 你可能没太明白他们的意思

你的错误在于,你的 port_no是在 __init__函数中 声明的, python 的类的属性声明很随意,
但是 type_ip 等属性 是在__init__之前 创建的, 事实上,他们在你创建任何一实例前就已经存在了,
显然这个时候你还没有调用 __init__, 所以port_no 不存在。

改正建议:
把type_ip等属性 在 __init__ 中创建

PS:
create_sw 函数中的 __init__(self, port_no) 是写错了吧,没有意义。
追问
我主要是想写成一个配置文件类型的代码,然后别人去使用的时候直接去填写那几个数组就好了。目前的状态是,port_no参数无法传递过来,看上面的追问。然后你的ps说的没有错……谢谢哈!求指导啊!
daweileo
2013-09-25 · TA获得超过275个赞
知道小有建树答主
回答量:121
采纳率:100%
帮助的人:157万
展开全部
目测没地方会报错吧,不过变量搞的比较乱:

class类体内用的是全局的port_no
__init__中绑定到self上的port_no没起啥作用

create_sw 中的__init__没啥用

44行 new_sw = sw(sw_type, f, wave, port_no)
port_no取的是函数的入参,其他3个取的是全局的

PS:上代码不要贴图啊。。
追问
我也觉得不会报错,但是始终无法传进去参数,执行一遍之后就,port_no的值就不再改变了。或者干脆就未定义。 creat_sw那个是写来验证的,没有用,去掉一样可以执行。我在另一个文件中去调用creat_sw(port_no)去创建交换机,但是始终无法搞定port_no参数的传递……求指导!!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三生佳丽不胜寒1367
2013-09-25 · 贡献了超过314个回答
知道答主
回答量:314
采纳率:0%
帮助的人:71.2万
展开全部
不用需要参数的话在__init__中加mbfj例如下面的Person类就有一个name变量195其他的依次类推class Person:    def __init__(selflptx name):        self.name = name
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式