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