Python之构造函数的练习(定义一“圆”(Circle)类,圆心为“点”Point类,构造一圆,求圆的周长和面积,并判断某点与圆的关系)

需求1:定义一“圆”(Circle)类,圆心为“点”Point类,构造一圆,求圆的周长和面积,并判断某点与圆的关系

分析:

Circle:

    特征:圆心,半径

    行为:圆的周长和面积

Point:

    特性:x y

 实现1:首先创建一个文件夹,文件夹下新建circle.py、point.py和test.py文件,分别定义,并保存运行test.py文件实现功能

circle.py文件:

'''
    特征:圆心,半径

    行为:圆的周长和面积
'''

class Circle():        #1.类名
    #2.构造函数
    def __init__(self,radius,circlePoint):
        self.radius = radius                 #半径
        self.circlePoint = circlePoint       #圆心

    #3.成员函数
    #求面积
    def area(self):
        return 3.14 * self.radius ** 2
        
    #求周长
    def zhouCahng(self):
        return 2 * 3.14 * self.radius

point.py文件: 

'''
    特性:x y
'''
class Point():     #1.类名
    #2.构造函数
    def __init__(self,x,y):
        self.x = x
        self.y = y

test.py文件: 

'''
定义一“圆”(Circle)类,圆心为“点”Point类,构造一圆,求圆的周长和面积,并判断某点与圆的关系
'''
from circle import Circle
from point import Point
import math

#1.创建一个圆心对象
circlePoint = Point(10,20)

#2.创建一个圆的对象
cir = Circle(8,circlePoint)

print(cir.radius,cir.circlePoint.x,cir.circlePoint.y)

#3.求圆的面积和周长【调用成员函数】
print(cir.area())
print(cir.zhouCahng())

#4.判断某点和圆之间的关系
#创建某一个点的对象
myPoint = Point(33,55)
res = (cir.circlePoint.x - myPoint.x) ** 2 + (cir.circlePoint.y - myPoint.y) ** 2
distance = math.sqrt(res)
if distance > cir.radius:
    print("圆外")
elif distance < cir.radius:
    print("圆内")
else:
    print("圆上")

说明:整个过程是先定义一个类,在类中书写构造函数和成员函数,并在类外面创建对象,调用成员函数

  • 14
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基point是一个表示,包含两个属性x和y,表示的横纵坐标。 派生circle是一个表示,继承自基point,包含一个属性radius,表示的半径。 求圆周长可以使用公式C=2πr,其中r为的半径,π为周率,约等于3.14。 因此,周长可以表示为C=2π*radius。在circle中,可以定义一个方法get_circumference(),用于计算周长。具体实现如下: class point: def __init__(self, x, y): self.x = x self.y = y class circle(point): def __init__(self, x, y, radius): super().__init__(x, y) self.radius = radius def get_circumference(self): return 2 * 3.14 * self.radius 假设有一个c,其半径为5,则可以通过以下代码计算其周长: c = circle(, , 5) circumference = c.get_circumference() print(circumference) 输出结果为31.4,即周长约为31.4。 ### 回答2: 定义point和派生circle,可以使用面向对象的思想来设计程序。在这个程序中,point作为基,主要用来存储的坐标信息。circle作为派生,继承了point所有的属性和方法,并添加了一个特有的属性——半径。 在circle中,定义一个求圆周长的方法circumference(),在该方法中通过调用父point中获取坐标信息的方法,以及自身的半径属性来计算出周长。具体的实现可以参照以下代码示例: ```python class point: def __init__(self, x, y): self.x = x self.y = y def get_x(self): return self.x def get_y(self): return self.y class circle(point): def __init__(self, x, y, r): super().__init__(x, y) self.r = r def get_r(self): return self.r def circumference(self): import math return 2 * math.pi * self.r ``` 在上述代码中,point有一个构造方法__init__(),用来初始化坐标信息,以及两个获取坐标信息的方法get_x()和get_y()。而circle继承了point,并添加了一个半径属性,以及一个求周长的方法circumference()。 使用该程序,可以创建一个对象并调用circumference()方法来求圆周长。如下面这个示例: ```python c = circle(1, 2, 3) c_circumference = c.circumference() print("周长是:", c_circumference) ``` 在上述示例中,我们创建了一个对象c,它的圆心坐标为(1, 2),半径为3。然后,调用c的circumference()方法,将计算出的周长保存在变量c_circumference中,并打印出来。 通过这种面向对象的程序设计方式,我们不仅可以方便地求出周长,而且还可以扩展程序,添加更多的图形对象和方法。 ### 回答3: 基point定义Point是一个基,用来表示平面上的一个,其中包含两个变量:横坐标x和纵坐标y。基point中包含以下成员函数: - 构造函数:用来初始化Point对象的x和y坐标。 - getX():返回Point对象的横坐标x。 - getY():返回Point对象的纵坐标y。 - setX(double x):设置Point对象的横坐标x。 - setY(double y):设置Point对象的纵坐标y。 派生circle定义Circle是一个派生,用来表示平面上的一个,其中包含一个圆心的引用(point对象)和一个半径radius。派生circle中包含以下成员函数: - 构造函数:用来初始化Circle对象,需要传递一个圆心和半径。 - getCenter():返回Circle对象的圆心。 - getRadius():返回Circle对象的半径。 - setCenter(Point center):设置Circle对象的圆心。 - setRadius(double radius):设置Circle对象的半径。 - getPerimeter():计算Circle对象的周长。 计算周长: 根据定义可知,周长公式是2πr,即半径(radius)乘以2π。而我们在派生circle中已经定义了一个getRadius()函数,可以用来获取的半径;因此,我们只需要在派生circle中再定义一个getPerimeter()函数,用来计算周长即可。 getPerimeter()函数的实现: double getPerimeter() { return 2 * 3.14159 * getRadius(); } 总结: 在上述代码中,我们定义了一个基point和一个派生circle,用来表示平面上的。通过在派生circle定义getPerimeter()函数,我们可以方便地计算周长。这种面向对象的编程方式具有良好的可维护性和扩展性,可以方便地添加新的方法和属性,同时避免了代码冗余。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值