小雪球i 发表于 2020-4-1 10:21:34

关于python的类与对象。

请依范例计算直径的3公分, 口径1.2 公分铜钱的面积, 范例如下:

class Circle:

    def __init__(self,radius):

      self.__radius=radius

    def getRadius(self):

      return self.__radius

    def setRadius(self,r):

      self.__radius=r

    def area(self):

      return 3.14*self.__radius**2

    def cir(self):

      return 2*3.14*self.__radius

    def __str__(self):

      return '半径是:'+str(self.__radius)

   

class Rectangle:

    def __init__(self,length,width):

      self.__length=length

      self.__width=width

    def getLength(self):

      return self.__length

    def getWidth(self):

      return self.__width

    def setLength(self,length):

      self.__length=length

    def setWidth(self,width):

      self.__width=width

    def area(self):

      return self.__length*self.__width

    def cir(self):

      return 2*(self.__length+self.__width)

    def __str__(self):

      return ' 长是:'+str(self.__length) +\

            ' 宽是:'+str(self.__width)   

   

class Ball(Circle):

    def __init__(self,radius):

      Circle.__init__(self, radius)

    def area(self):

      return 4*3.14*self.getRadius()**2

    def volume(self):

      return4/3*3.14*self.getRadius()**3

    def __str__(self):

      return Circle.__str__(self)

class Cuboid(Rectangle):

    def __init__(self,length,width,height):

      super().__init__(length,width)

      self.__height=height

    def getHeight(self):

      return self.__height

    def setHeight(self,height):

      self.__height=height

    def area(self):

      return 2*(self.getWidth()*self.getLength()+\

                  self.getLength()*self.__height\

                  +self.getWidth()*self.__height)

    def volume(self):

      return self.getWidth()*self.getLength()*self.__height

    def __str__(self):

      return super().__str__()+' 高是:'+str(self.__height)

   

class Copperplate(Circle,Rectangle):

    def __init__(self,radius,length,width):

      super().__init__(radius)

      Rectangle.__init__(self, length, width)

    def area(self):

      return Circle.area(self)-Rectangle.area(self)

    def __str__(self):

      return Circle.__str__(self)+Rectangle.__str__(self)

   

c=Circle(5)

print("半径为{0}的圆的面积是{1},周长是{2:.2f}".\

          format(c.getRadius(),c.area(),c.cir()))

c.setRadius(9)

print("半径为{0}的圆的面积是{1},周长是{2:.2f}".\

          format(c.getRadius(),c.area(),c.cir()))

r=Rectangle(4,5)

print("长为{0},宽为{1}的矩形的面积是{2},周长是{3}".\

          format(r.getLength(),r.getWidth(),r.area(),r.cir()))

r.setLength(7)

r.setWidth(8)

print("长为{0},宽为{1}的矩形的面积是{2},周长是{3}".\

      format(r.getLength(),r.getWidth(),r.area(),r.cir()))

b=Ball(5)

print("半径为{0}的球的表面积面积是{1:.2f},体积是{2:.2f}".\

      format(b.getRadius(),b.area(),b.volume()))

b.setRadius(9)

print("半径为{0}的球的表面积面积是{1:.2f},体积是{2:.2f}".\

      format(b.getRadius(),b.area(),b.volume()))

y=Cuboid(3,4,5)

print("长为{0},宽为{1},高为{2}的长方体的表面积是{3},体积是{4}".\

      format(y.getLength(),y.getWidth(),y.getHeight(),\

                  y.area(),y.volume()))

y.setLength(7)

y.setWidth(8)

y.setHeight(9)

print("长为{0},宽为{1},高为{2}的长方体的表面积是{3},体积是{4}".\

      format(y.getLength(),y.getWidth(),y.getHeight(),\

                  y.area(),y.volume()))

p=Copperplate(9,2,3)

print("半径为{0},长为{1},宽为{2}的铜钱的面积是{3:.2f}".\

      format(p.getRadius(),p.getLength(),p.getWidth(),p.area()))

p.setRadius(7)

p.setLength(3)

p.setWidth(4)

print("半径为{0},长为{1},宽为{2}的铜钱的面积是{3:.2f}".\

      format(p.getRadius(),p.getLength(),p.getWidth(),p.area()))

print(c)

print(r)

print(b)

print(y)

print(p)

显示语法有错,怎么改能让它运行出来呢?

永恒的蓝色梦想 发表于 2020-4-1 10:27:21

class Circle:

    def __init__(self,radius):

      self.__radius=radius

    def getRadius(self):

      return self.__radius

    def setRadius(self,r):

      self.__radius=r

    def area(self):

      return 3.14*self.__radius**2

    def cir(self):

      return 2*3.14*self.__radius

    def __str__(self):

      return '半径是:'+str(self.__radius)

   

class Rectangle:

    def __init__(self,length,width):

      self.__length=length

      self.__width=width

    def getLength(self):

      return self.__length

    def getWidth(self):

      return self.__width

    def setLength(self,length):

      self.__length=length

    def setWidth(self,width):

      self.__width=width

    def area(self):

      return self.__length*self.__width

    def cir(self):

      return 2*(self.__length+self.__width)

    def __str__(self):

      return ' 长是:'+str(self.__length) +' 宽是:'+str(self.__width)   

   

class Ball(Circle):

    def __init__(self,radius):

      Circle.__init__(self, radius)

    def area(self):

      return 4*3.14*self.getRadius()**2

    def volume(self):

      return4/3*3.14*self.getRadius()**3

    def __str__(self):

      return Circle.__str__(self)

class Cuboid(Rectangle):

    def __init__(self,length,width,height):

      super().__init__(length,width)

      self.__height=height

    def getHeight(self):

      return self.__height

    def setHeight(self,height):

      self.__height=height

    def area(self):

      return 2*(self.getWidth()*self.getLength()+\

                  self.getLength()*self.__height\

                  +self.getWidth()*self.__height)

    def volume(self):

      return self.getWidth()*self.getLength()*self.__height

    def __str__(self):

      return super().__str__()+' 高是:'+str(self.__height)

   

class Copperplate(Circle,Rectangle):

    def __init__(self,radius,length,width):

      super().__init__(radius)

      Rectangle.__init__(self, length, width)

    def area(self):

      return Circle.area(self)-Rectangle.area(self)

    def __str__(self):

      return Circle.__str__(self)+Rectangle.__str__(self)

   

c=Circle(5)

print("半径为{0}的圆的面积是{1},周长是{2:.2f}".\

          format(c.getRadius(),c.area(),c.cir()))

c.setRadius(9)

print("半径为{0}的圆的面积是{1},周长是{2:.2f}".\

          format(c.getRadius(),c.area(),c.cir()))

r=Rectangle(4,5)

print("长为{0},宽为{1}的矩形的面积是{2},周长是{3}".\

          format(r.getLength(),r.getWidth(),r.area(),r.cir()))

r.setLength(7)

r.setWidth(8)

print("长为{0},宽为{1}的矩形的面积是{2},周长是{3}".\

      format(r.getLength(),r.getWidth(),r.area(),r.cir()))

b=Ball(5)

print("半径为{0}的球的表面积面积是{1:.2f},体积是{2:.2f}".\

      format(b.getRadius(),b.area(),b.volume()))

b.setRadius(9)

print("半径为{0}的球的表面积面积是{1:.2f},体积是{2:.2f}".\

      format(b.getRadius(),b.area(),b.volume()))

y=Cuboid(3,4,5)

print("长为{0},宽为{1},高为{2}的长方体的表面积是{3},体积是{4}".\

      format(y.getLength(),y.getWidth(),y.getHeight(),\

                  y.area(),y.volume()))

y.setLength(7)

y.setWidth(8)

y.setHeight(9)

print("长为{0},宽为{1},高为{2}的长方体的表面积是{3},体积是{4}".\

      format(y.getLength(),y.getWidth(),y.getHeight(),\

                  y.area(),y.volume()))

p=Copperplate(9,2,3)

print("半径为{0},长为{1},宽为{2}的铜钱的面积是{3:.2f}".\

      format(p.getRadius(),p.getLength(),p.getWidth(),p.area()))

p.setRadius(7)

p.setLength(3)

p.setWidth(4)

print("半径为{0},长为{1},宽为{2}的铜钱的面积是{3:.2f}".\

      format(p.getRadius(),p.getLength(),p.getWidth(),p.area()))

print(c)

print(r)

print(b)

print(y)

print(p)改好了,你这个空行让人头疼

sunrise085 发表于 2020-4-1 10:44:34

你这代码,为什么每一行之间都要有一个空行呢?
现在发现的问题就是 class Rectangle 中 def __str__(self) 的return那一行有问题,提示有非法字符,不知道是什么,删掉中间的空行就没问题了

sunrise085 发表于 2020-4-1 10:45:44

程序代码应该这样发
在发帖界面,上方工具栏,有这样的一个符号"<>"是发代码用的
class Circle:
    def __init__(self,radius):
      self.__radius=radius
    def getRadius(self):
      return self.__radius
    def setRadius(self,r):
      self.__radius=r
    def area(self):
      return 3.14*self.__radius**2
    def cir(self):
      return 2*3.14*self.__radius
    def __str__(self):
      return '半径是:'+str(self.__radius)

class Rectangle:
    def __init__(self,length,width):
      self.__length=length
      self.__width=width
    def getLength(self):
      return self.__length
    def getWidth(self):
      return self.__width
    def setLength(self,length):
      self.__length=length
    def setWidth(self,width):
      self.__width=width
    def area(self):
      return self.__length*self.__width
    def cir(self):
      return 2*(self.__length+self.__width)
    def __str__(self):
      return ' 长是:'+str(self.__length) +\
      ' 宽是:'+str(self.__width)   

class Ball(Circle):
    def __init__(self,radius):
      Circle.__init__(self, radius)
    def area(self):
      return 4*3.14*self.getRadius()**2
    def volume(self):
      return4/3*3.14*self.getRadius()**3
    def __str__(self):
      return Circle.__str__(self)

class Cuboid(Rectangle):
    def __init__(self,length,width,height):
      super().__init__(length,width)
      self.__height=height
    def getHeight(self):
      return self.__height
    def setHeight(self,height):
      self.__height=height
    def area(self):
      return 2*(self.getWidth()*self.getLength()+\
      self.getLength()*self.__height+self.getWidth()*self.__height)
    def volume(self):
      return self.getWidth()*self.getLength()*self.__height
    def __str__(self):
      return super().__str__()+' 高是:'+str(self.__height)

class Copperplate(Circle,Rectangle):
    def __init__(self,radius,length,width):
      super().__init__(radius)
      Rectangle.__init__(self, length, width)
    def area(self):
      return Circle.area(self)-Rectangle.area(self)
    def __str__(self):
      return Circle.__str__(self)+Rectangle.__str__(self)

c=Circle(5)
print("半径为{0}的圆的面积是{1},周长是{2:.2f}".\
format(c.getRadius(),c.area(),c.cir()))
c.setRadius(9)
print("半径为{0}的圆的面积是{1},周长是{2:.2f}".\
format(c.getRadius(),c.area(),c.cir()))
r=Rectangle(4,5)
print("长为{0},宽为{1}的矩形的面积是{2},周长是{3}".\
format(r.getLength(),r.getWidth(),r.area(),r.cir()))
r.setLength(7)
r.setWidth(8)
print("长为{0},宽为{1}的矩形的面积是{2},周长是{3}".\
format(r.getLength(),r.getWidth(),r.area(),r.cir()))
b=Ball(5)
print("半径为{0}的球的表面积面积是{1:.2f},体积是{2:.2f}".\
format(b.getRadius(),b.area(),b.volume()))
b.setRadius(9)
print("半径为{0}的球的表面积面积是{1:.2f},体积是{2:.2f}".\
format(b.getRadius(),b.area(),b.volume()))
y=Cuboid(3,4,5)
print("长为{0},宽为{1},高为{2}的长方体的表面积是{3},体积是{4}".\
format(y.getLength(),y.getWidth(),y.getHeight(),y.area(),y.volume()))
y.setLength(7)
y.setWidth(8)
y.setHeight(9)
print("长为{0},宽为{1},高为{2}的长方体的表面积是{3},体积是{4}".\
format(y.getLength(),y.getWidth(),y.getHeight(),y.area(),y.volume()))
p=Copperplate(9,2,3)
print("半径为{0},长为{1},宽为{2}的铜钱的面积是{3:.2f}".\
format(p.getRadius(),p.getLength(),p.getWidth(),p.area()))
p.setRadius(7)
p.setLength(3)
p.setWidth(4)
print("半径为{0},长为{1},宽为{2}的铜钱的面积是{3:.2f}".\
format(p.getRadius(),p.getLength(),p.getWidth(),p.area()))
print(c)
print(r)
print(b)
print(y)
print(p)

小雪球i 发表于 2020-4-3 16:24:09

那这个代码如何更改,能运行出直径三公分,口径1.2公分的铜钱面积呢?

_2_ 发表于 2020-4-3 16:48:04

永恒的蓝色梦想 发表于 2020-4-1 10:27
改好了,你这个空行让人头疼

看起来也很头疼
页: [1]
查看完整版本: 关于python的类与对象。