从构造中获取变量

2024-04-19 05:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着写一个程序,从一个构造函数中得到一个变量到一个方法,但我不知道怎么做:(我在方法sprawdz中得到一个p.liczba错误。我想这里有一个用户的号码。同样的情况也发生在p.wielokrotnosc。我知道我可以写这个程序更容易,但我真的很想学习像这样的简单例子面向对象编程

 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()

Tags: 方法用户self程序def错误情况class
3条回答

这是因为变量liczba包含在类Przyklad中,所以当您尝试在Dane中访问它时,是不可能的。你知道吗

你应该尝试让liczba成为一个全局变量(这很危险),或者让Dane成为Przyklad的后代(尽管这些名称……)。你知道吗

问题是无法从Przyklad的构造函数中获取变量。问题是将其保存在Dane。常见的过程是将其附加到Dane的实例:

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

       self.p = Przyklad(a)

然后,您将在Dane中获得self.p

ap是局部变量,不是Dane的成员。必须使用self.(正如jornsharpe所指出的那样)才能从类上下文访问此变量:

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

相关问题 更多 >