Can';t在python类中调用函数
正如标题所说,我不能在我的类中调用函数。代码如下:Can';t在python类中调用函数,python,python-3.x,function,class,call,Python,Python 3.x,Function,Class,Call,正如标题所说,我不能在我的类中调用函数。代码如下: def __init__(self, minimum, maximum, dobra_liczba): self.minimum = minimum self.maximum = maximum self.dobra_liczba = dobra_liczba def sprawdz_liczbe_int(self, liczba): print("s
def __init__(self, minimum, maximum, dobra_liczba):
self.minimum = minimum
self.maximum = maximum
self.dobra_liczba = dobra_liczba
def sprawdz_liczbe_int(self, liczba):
print("sprawdzam liczbe")
if isinstance(liczba, int) and self.minimum <= liczba <= self.maximum:
return True
else:
return False
def czy_liczba_trafiona(self, liczba):
if liczba == self.dobra_liczba:
print("trafiłeś!")
else:
print("pudło!")
def graj(self):
x = int(input("wpisz liczbe od "+str(self.minimum)+" do "+str(self.maximum)+": "))
print(x)
if self.sprawdz_liczbe_int(x) == True:
self.czy_liczba_trafiona(x)
a1 = Gra(0, 100, 50)
a1.graj()
定义初始值(自身、最小值、最大值、多布拉·利茨巴):
self.minimum=最小值
self.max=最大值
self.dobra_liczba=dobra_liczba
def sprawdz_liczbe_int(自我,liczba):
印刷品(“sprawdzam-liczbe”)
在类中调用函数时,如果isinstance(liczba,int)和self.minimum,则不要将self
添加为参数。
这条线就是你出错的地方
sprawdz_liczbe_int(self,input("wpisz liczbe od "+str(self.minimum)+" do "+str(self.maximum)+": ")
试试这个
class Gra:
def __init__(self, minimum, maximum, liczba):
self.minimum = minimum
self.maximum = maximum
self.liczba = liczba
def sprawdz_liczbe_int(self, liczba):
print("sprawdzam liczbe")
if liczba == isinstance(liczba, int) and self.minimum <= liczba >= self.maximum:
return True
else:
return False
def graj(self):
if self.sprawdz_liczbe_int(input("wpisz liczbe od "+str(self.minimum)+" do "+str(self.maximum)+": ")) == True:
print("dobra liczba")
a1 = Gra(0, 100, 50)
a1.graj()
Gra类:
定义初始值(自身、最小值、最大值、liczba):
self.minimum=最小值
self.max=最大值
self.liczba=liczba
def sprawdz_liczbe_int(自我,liczba):
印刷品(“sprawdzam-liczbe”)
如果liczba==isinstance(liczba,int)且self.minimum=self.maximum:
返回真值
其他:
返回错误
def graj(自我):
如果self.sprawdz_liczbe_int(输入(“wpisz liczbe od”+str(self.minimum)+“do”+str(self.minimum)+“:”)==真:
印刷品(“dobra liczba”)
a1=Gra(0,100,50)
a1.graj()
您的条件的问题是您永远不会得到True
,因为如果liczba==isinstance(liczba,int)
总是返回False
input()
中的值是一个字符串
,或者您可以测试liczba
是否是int
,但情况并非如此,因此它总是False
如果省略它,只测试值是否在所需的范围内,可能会更好。调用函数时,错误地将“self”作为参数传递
错:
sprawdz_liczbe_int(self.input("wpisz liczbe od"+str(self.minimum)+" do "+str(self.maximum)+”:")
更正:
sprawdz_liczbe_int(input("wpisz liczbe od"+str(self.minimum)+" do "str(self.maximum)+":")
“self”关键字的主要工作是在python中访问类的属性和方法
更清楚地说,“self”总是指向您当前所在的对象。调用成员函数时,不要将self
作为第一个参数传递。例如:如果self.sprawdz_liczbe_int(输入(…))==True:
你知道你在self.sprawdz_liczbe_int(self…)
中传递了两次self
吗?我删除了self参数,但它仍然不起作用。self.minimum=self.maximum
你的意思是self.minimum吗,有点小错误,但我的代码仍然不起作用:(我删除了self参数,但它仍然不起作用。你有错误吗?没有,它只是在输出“wpisz liczbe od 0 do 100:@kiciarozek”后停止并没有输出任何内容:“@kiciarozek应该是这样的,因为input()
您在代码中使用了,现在您应该键入一些值并用返回键盘验证它。在sprawdz_liczbe_int()的第一行有print(“sprawdzam liczbe”),但它没有打印。我在代码中做了一些更改,如:def graj(self):x=input(“wpisz liczbe od”+str(self.minimum)+“do”+str(self.max)+“:”)如果self.sprawdz_liczbe_int(x)=True:self.czy_liczba_traviona(x)
我添加了print(x)来检查它在从用户获得输入后是否会打印x,但它不打印,程序结束