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