我接受了一个Java类并试图将其转换为python,我做错了什么?
我真的不知道我在做什么,我写的唯一成功的类是Java。我似乎无法让这个代码正常工作。它不断地给我“小盒子没有定义”以及“星星条纹=星星条纹()”,并且对第二次回溯没有解释我接受了一个Java类并试图将其转换为python,我做错了什么?,python,class,Python,Class,我真的不知道我在做什么,我写的唯一成功的类是Java。我似乎无法让这个代码正常工作。它不断地给我“小盒子没有定义”以及“星星条纹=星星条纹()”,并且对第二次回溯没有解释 class StarsAndStripes(): def __init__(self): self.small_box = small_box() self.big_box = big_box() def twenty_stars(): for i i
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("\n\n")
print(stars_stripes.big_box)
结果应该如下所示:
--------------------
********************
--------------------
********************
--------------------
********************
--------------------
--------------------
********************
--------------------
********************
--------------------
********************
--------------------
--------------------
********************
--------------------
********************
--------------------
********************
--------------------
我认为问题出在你的
\uuuu init\uuu
方法中。您正试图调用一个小\u box
(非类成员)函数,但该函数不存在。尝试删除整个\uuuu init\uuuu
方法,我认为您不需要它。您忘记引用该类的实例。这是使用python中的self
作为方法的第一个参数来完成的
另外,您不必打印方法调用的结果,因为它们实际上已经打印到输出(我已经更改了方法的主体)
而且您不需要在\uuuu init\uuu
函数中调用类的方法
class StarsAndStripes():
定义初始化(自):
通过
def二十颗星(自身):
对于范围(20)内的i:
打印(“*”)
打印(“\n”)
def二十_破折号(自身):
对于范围(20)内的i:
打印(“-”)
打印(“\n”)
def小型_盒(自身):
对于范围(3)中的i:
self.two_破折号()
赛尔夫。二十颗星()
self.two_破折号()
def big_box():
self.small_box()
self.small_box()
星条旗
星条旗。小盒子()
打印(“\n\n”)
星条旗。大盒子()
所有这些变量都没有在任何地方定义。看起来您需要阅读Python类定义的基础知识。注意,这里从不使用任何内部状态,因此我可能不会首先将其作为类编写,只编写模块级函数。提示:a)需要执行self.small\u box()从类中的另一个函数调用small\u box。B) 您需要将self放入类C的所有函数中)您需要使用()调用函数您不能使用与实例方法同名的实例属性。这两个都是通过self.small_box
访问的;一个将覆盖另一个。此外,如果出于某种原因确实希望使用类方法作为属性,可以通过@property
装饰器来实现。