从构造函数中获取变量

时间:2014-12-15 19:19:12

标签: python class oop methods

我尝试编写程序并从构造函数到方法获取变量,但我不知道该怎么做:(我在方法{{1}中遇到p.liczba错误我希望在这里有一个来自用户的数字。同样的情况是sprawdz。我知道我可以更容易地编写这个程序但是我真的想用这样的简单例子来学习OOP

p.wielokrotnosc

3 个答案:

答案 0 :(得分:1)

问题不是来自Przyklad的构造函数的变量。问题是将其保存在Dane中。常见的过程是将其附加到Dane

的实例
def wczytaj(self):
       a = int(input('Podaj mi liczbę '))

       self.p = Przyklad(a)

然后,您将在self.p

中提供Dane

答案 1 :(得分:0)

这种情况正在发生,因为变量liczba包含在类Przyklad中,所以当您尝试在Dane中访问它时,它是不可能的。

你应该尝试将liczba作为全局变量(这是危险的),或让Dane成为Przyklad的后代(这些名称虽然......)。

答案 2 :(得分:0)

ap是本地变量,不是Dane的成员。您必须使用self.(由jonrsharpe指出)才能从类上下文中访问此变量:

class Dane:

  def wczytaj(self):
       a = int(input('Podaj mi liczbę '))

       self.p = Przyklad(a)

  def sprawdz(self):
       if (self.p.liczba % self.p.wielokrotnosc == 0):
            return true

另一个问题是,在您调用self.wielokrotnosc方法之前podajSzukana(self)不存在。解决这个问题的一种方法是在构造函数中调用该函数:

class Przyklad:
  def __init__(self, liczba):
       self.liczba = liczba
       self.podajSzukana()     // Call the method here.

  def podajSzukana(self):
       self.wielokrotnosc = 3