Python 从构造函数中获取变量
我试图编写一个程序,从构造函数中获取一个变量到一个方法,但我不知道怎么做:(我在Python 从构造函数中获取变量,python,class,oop,methods,Python,Class,Oop,Methods,我试图编写一个程序,从构造函数中获取一个变量到一个方法,但我不知道怎么做:(我在sprawdz方法中得到了一个p.liczba错误。我想从用户那里得到一个数字。与p.wielokrotnosc情况相同。我知道我可以更容易地编写这个程序,但我真的很想用像这样的简单示例来学习OOP。) class Przyklad: def __init__(self, liczba): self.liczba = liczba def podajSzukana(s
sprawdz
方法中得到了一个p.liczba
错误。我想从用户那里得到一个数字。与p.wielokrotnosc
情况相同。我知道我可以更容易地编写这个程序,但我真的很想用像这样的简单示例来学习OOP。)
class Przyklad:
def __init__(self, liczba):
self.liczba = liczba
def podajSzukana(self):
self.wielokrotnosc = 3
class Dane:
def wczytaj(self):
a = int(input('Podaj mi liczbę '))
p = Przyklad(a)
def sprawdz(self):
if (p.liczba % p.wielokrotnosc == 0):
return true
print ('Witaj w programie szukającym wielokrotność liczby 3 \n')
d = Dane()
d.wczytaj()
d.sprawdz()
发生这种情况是因为变量
liczba
包含在类Przyklad
中,因此当您尝试在Dane
中访问它时,是不可能的
你应该试着让
liczba
成为一个全局变量(这很危险),或者让Dane
成为Przyklad
的后代(尽管这些名称……).问题不是从Przyklad
的构造函数中获取变量。问题是将其保存在Dane
中。常见的过程是将其附加到Dane
的实例:
def wczytaj(self):
a = int(input('Podaj mi liczbę '))
self.p = Przyklad(a)
然后,您将有
self.p
在Dane
a
中可用,并且p
是本地变量,不是Dane
的成员。您必须使用self.
(如Jornshape所指出的)才能从类上下文访问此变量:
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
您应该使用
self.p
来分配和检索。