我正在尝试自学如何使用类,我正在尝试一个我在一本书中找到的例子,要求你创建两个类然后打印出一些信息。这是我的代码:
import math
import turtle
import urllib.request
class Shape:
def __init__(self,x=0,y=0):
self.x = x
self.y = y
def calc_area(self):
pass
def calc_perim(self):
pass
def get_shape_type(self):
return "s"
def to_string(self):
return "%s %f %f" % (self.get_shape_type(), self.x, self.y)
def get_draw_params(self):
return [self.x, self.y]
class Circle(Shape):
def __init__(self,x=0,y=0,rad=0):
super().__init__(x,y)
self.radius = rad
def calc_area(self):
area = math.pi * self.radius * self.radius
return area
def calc_perim(self):
perim = 2 * math.pi * self.radius
return perim
def calc_circumference(self):
return self.calc_perim()
def get_shape_type(self):
return "c"
def to_string(self):
return "%s %f %f %f" % (super().to_string(), self.radius, self.calc_area(),self.calc_perim())
def get_draw_params(self):
result = super().get_draw_params()
result.extend([self.radius])
return result
cir = Circle(0,0,150)
print(cir)
当我尝试运行它时,会打印出来:
<__main__.Circle object at 0x103d19ef0>
当我打电话给Circle课时,我不确定我做错了什么。我希望在输入init函数要求的值之后,会有一些数据要打印出来。任何帮助将不胜感激。
答案 0 :(得分:2)
尝试调用您添加到班级中的to_string()
方法:
>>> cir = Circle(0,0,150)
>>> print(cir)
<__main__.Circle object at 0x7fba2851b400>
>>> print(cir.to_string())
c 0.000000 0.000000 150.000000 70685.834706 942.477796
如果您想要自定义字符串表示形式,请尝试在您的课程中添加__unicode__()
和/或__str__()
方法:
def __str__(self):
return self.to_string()
现在你可以这样做:
>>> c = Circle(0,0,150)
>>> print(c)
c 0.000000 0.000000 150.000000 70685.834706 942.477796
答案 1 :(得分:1)
实际上非常正确,这就是python打印对象的方式,
如果你想让你的print(对象)打印别的东西,在你的类中定义__str__
方法,就像这样(它应该返回一个字符串):
class Circle(Shape):
# your stuff
# ...
def __str__(self):
return "radius: " + self.radius
cir = Circle(0,0,150)
print(cir)
# radius: 150
答案 2 :(得分:0)
你所做的一切都没有错。一切都很好。
这:<__main__.Circle object at 0x103d19ef0>
表示您拥有Circle的对象。所以,如果你添加这个:
print(cir.calc_area())
您最终会得到您期望的区域结果。
此外,一些可以帮助您的信息是,如果您想了解有关物体内部物体的更多信息,可以这样做:
print(dir(cir))
这将告诉您'cir'对象内部的内容,您还会看到您创建的方法也应该存在。即使在深入了解Python时导入其他模块,也总是很方便找出可用的内容。
上的文档答案 3 :(得分:-1)
嗯,这是打印时Circle
对象的默认表示形式。
现在您可以调用cir
的方法,例如
print(cir.calc_area())