我想从名为select_image()的类之外的函数中访问名为text的NN类变量,该函数应将其显示为标签,名为test()的类函数创建变量文本,然后getText应该是让所有人都可以使用它,但我实现它的方式不起作用,我该如何正确地做到这一点?感谢您的帮助
class NN:
def __init__(self, ni, nh, no):
# number of input, hidden, and output nodes
self.ni = ni + 1 # +1 for bias node
self.nh = nh
self.no = no
#activations for nodes
self.ai = [1.0] * self.ni
self.ah = [1.0] * self.nh
self.ao = [1.0] * self.no
#create weights
self.wi = makeMatrix(self.ni, self.nh)
self.wo = makeMatrix(self.nh, self.no)
def test(self, patterns):
for p in patterns:
print(p[0], '->', self.update(p[0]))
a = self.update(p[0])
b = a[0]
print(b)
###############TEXT VARIABLE############
if b >= 0.5:
text = "Melanoma"
else:
text = "Healthy"
return text
def getText(self):
self.text=text
return text
def select_image():
text = NN.getText()
print(text)
label7 = Label(root, text=text)
label7.pack(side="bottom", padx=10, pady=10)
答案 0 :(得分:1)
一个好的方法是,根本不使用getter函数。在定义文本变量时,将其定义为实例变量self.text
if b >= 0.5:
self.text = "Melanoma"
else:
self.text = "Healthy"
但是,您在类中的函数中定义了self.text
,因此如果您在调用此函数之前尝试访问self.text
,则会出现错误({{1 }})。因此,建议始终在 init 函数中初始化所有实例变量。
AttributeError: 'NN' object has no attribute 'text'
从类外部访问self.text:
class NN:
def __init__(self, ni, nh, no):
self.text = None
def test(self, patterns):
if b >= 0.5:
self.text = "Melanoma"
else:
self.text = "Healthy"
return self.text
答案 1 :(得分:0)
在getText(self)
的正文中,只需使用return self.text
。