我上了一个Java课,并试图将其转换为python,我做错了什么?



我真的不知道我在做什么,我写过的唯一成功的类是用Java写的。我似乎无法让这段代码工作。它一直给我"small_box未定义"以及"stars_stripes = StarsAndStripes((",并且在第二次回溯中没有解释。

class StarsAndStripes():
def __init__(self):
self.small_box = small_box()
self.big_box = big_box()
def twenty_stars():
for i in range(20):
print("*")
print("n")
def twenty_dashes():
for i in range(20):
print("-")
print("n")
def small_box():
for i in range(3):
print(twenty_dashes)
print(twenty_stars)
print(twenty_dashes)
def big_box():
print(small_box)
print(small_box)
stars_stripes = StarsAndStripes()
print(stars_stripes.small_box)
print("nn")
print(stars_stripes.big_box)

结果应如下所示:

--------------------
********************
--------------------
********************
--------------------
********************
--------------------

--------------------
********************
--------------------
********************
--------------------
********************
--------------------
--------------------
********************
--------------------
********************
--------------------
********************
--------------------

您忘记引用该类的实例。这是使用 python 中的self作为方法的第一个参数来完成的。

此外,您不必打印方法调用的结果,因为它们实际上已经打印到输出(我已经更改了方法的主体(。

而且,您无需在__init__函数中调用类的方法。

class StarsAndStripes():
def __init__(self):
pass
def twenty_stars(self):
for i in range(20):
print("*")
print("n")
def twenty_dashes(self):
for i in range(20):
print("-")
print("n")
def small_box(self):
for i in range(3):
self.twenty_dashes()
self.twenty_stars()
self.twenty_dashes()
def big_box():
self.small_box()
self.small_box()
stars_stripes = StarsAndStripes()
stars_stripes.small_box()
print("nn")
stars_stripes.big_box()

我认为问题出在您的__init__方法上。您正在尝试调用small_box(非类成员(函数,但它不存在。尝试删除整个__init__方法,我认为您不需要它。

最新更新