python从类外部获取变量

时间:2017-05-01 22:21:58

标签: python class

我想从名为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)

2 个答案:

答案 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