所以我有这段代码:
import random
class Node():
def __init__(self, name, content):
self.name = name
self.mac_address = self.generate_mac
self.content = content
def generate_mac():
return "%02x:%02x:%02x:%02x:%02x:%02x" % (
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255)
)
class Switch():
def __init__(self, name, content):
self.name = name
self.file = name + ".txt"
self.content = content
def write_table(self, send_node, recv_node):
f = open(self.file, 'w')
f.write(send_node.mac_address() + " " + send_node.name[-1])
我希望每个节点都有一个固定的MAC地址,稍后我可以使用node_instance.mac_address
获取。但每次我这样做,我都会生成一个新地址。如何保持固定?
答案 0 :(得分:1)
在您的__init__
方法中意味着撰写
self.mac_address = self.generate_mac()
并在靠近底部的电话中写下
f.write(send_node.mac_address + " " + send_node.name[-1])
你写过
self.mac_address = self.generate_mac
这意味着self.mac_address
实际上是一种方法。您希望在构造期间将其设置为字符串属性而不是方法。
答案 1 :(得分:0)
self.mac_address = self.generate_mac()
不是将函数赋值给变量,而是调用函数。然后在对象创建上:node_instance = Node()将运行 init 并生成Mac地址。 mac_address现在将是一个字符串(函数调用的结果),并且将来对node_instance.mac_address的所有调用都将是字符串。