homework_day17_Object-Oriented

  1. 定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积
class Rectangle:
    
    def __init__(self, length=1, width=1):
        self.length = length
        self.width = width
        
    def circum(self):
        return (self.length + self.width) * 2
    
    def area(self):
        return self.length * self.width
    
square1 = Rectangle(3, 3)

print(square1.circum())
print(square1.area())
12
9
  1. 定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离
class Point:
    
    def __init__(self, location=(0, 0)):
        self.loc = location
        self.x = location[0]
        self.y = location[1]
        
    def distance(self, loc):
        return ((self.x - loc[0])**2 + (self.y - loc[1])**2)**0.5
    
p1 = Point((3, 5))
p2 = Point((7, 7))

p1.distance(p2.loc)
4.47213595499958
  1. 定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切
import math
class Circle:
    pi = math.pi
    
    def __init__(self, r=1, centre=(0, 0)):
        self.r = r
        self.centre = Point(centre)
        
    def circum(self):
        return 2 * self.pi * self.r
    
    def area(self):
        return self.pi * self.r**2
    
    def circum_cision_with(self, circle):
        return self.centre.distance(circle.centre.loc) == self.r + circle.r
    
    
c1 = Circle(5)
c2 = Circle(2, (7, 0))
c3 = Circle(6, (-4, 3))

print(c3.circum())
print(c2.area())
print(c1.circum_cision_with(c2))
print(c1.circum_cision_with(c3))
37.69911184307752
12.566370614359172
True
False
  1. 定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度
class Seg_Line:
    
    def __init__(self, start_p=(0, 0), end_p=(0, 0)):
        self.start_p = Point(start_p)
        self.end_p = Point(end_p)
        
    def length(self):
        return self.start_p.distance(self.end_p.loc)
sl1 = Seg_Line((0, 0), (3, 4))

sl1.length()
5.0
  1. 定义一个狗类和一个人类:

    狗拥有属性:姓名、性别和品种 拥有方法:叫唤

    人类拥有属性:姓名、年龄、狗 拥有方法:遛狗

class Dog:
    
    def __init__(self, name=None, gender=None, kind=None):
        self.name = name
        self.gender = gender
        self.kind = kind
        
    def woof(self):
        print('Woof~woof~~~')
        
        
class Human:
    
    def __init__(self, name=None, age=None, dog=None):
        self.name = name
        self.age = age
        self.dog = dog
        
    def walking_dog(self, dog):
        if self.dog is dog:
            print(f'Let\'s go {dog.name}!')
            dog.woof()
        else:
            print('That\'s not my dog.')
        
people1 = Human()
dog1 = Dog(name='小狗')
dog2 = Dog(name='大狗')
people1.dog = dog1

dog1.woof()
people1.walking_dog(dog1)
people1.walking_dog(dog2)
Woof~woof~~~
Let's go 小狗!
Woof~woof~~~
That's not my dog.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值