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

发布网友 发布时间:2022-03-03 18:47

我来回答

3个回答

热心网友 时间:2022-03-03 20:17

实参是函数调用时候传入的参数。形参是声明时候写的参数。 你可能没太明白他们的意思

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

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

PS:
create_sw 函数中的 __init__(self, port_no) 是写错了吧,没有意义。追问我主要是想写成一个配置文件类型的代码,然后别人去使用的时候直接去填写那几个数组就好了。目前的状态是,port_no参数无法传递过来,看上面的追问。然后你的ps说的没有错……谢谢哈!求指导啊!

热心网友 时间:2022-03-03 21:35

目测没地方会报错吧,不过变量搞的比较乱:

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参数的传递……求指导!!

热心网友 时间:2022-03-03 23:09

不用需要参数的话在__init__中加mbfj例如下面的Person类就有一个name变量195其他的依次类推class Person:    def __init__(selflptx name):        self.name = name
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com