-
定义一个狗类和一个人类:
狗拥有属性:姓名、性别和品种 拥有方法:叫唤
class Dog: def __init__(self, name, sex, variety): self.name = name self.gender = sex self.variety = variety @classmethod def call_out(cls): print("叫唤")
人类拥有属性:姓名、年龄、狗 拥有方法:遛狗
class Person: def __init__(self, name, sex, dog): self.name = name self.gender = sex self.dog = dog @classmethod def walk_dog(cls): print("遛狗")
#yt class Dog: def __init__(self, name, gender='公', breed='土狗' ): self.name = name self.gender = gender self. breed = breed def call_out(self): print(f'{self.name}:ww') class Person: def __init__(self, name, age=18, dog=None): self.name = name self.age = age self.dog = dog def walk_the_dog(self): if self.dog: print(f'{self.name}牵着{self.dog.name}散步') else: print('没有狗') p1 = Person('zl') p1.dog = Dog('CC', '母', '萨摩耶') p1.walk_the_dog()
-
定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积
class Rectangle: def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width def perimeter(self): return (self.length + self.width) * 2 #yt class Rect: def __init__(self, width, height): self.width = width self.height = height def area(self): return self.width * self.height def primeter(self): return (self.width + self.height)*2 r1 = Rect(10, 5) print(r1.area(), r1.primeter)
-
定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离
class Point: def __init__(self, x, y): self.x = x self.y = y def distance(self, Point): return ((self.x - Point.x)**2 + (self.y - Point.y)**2)**0.5 p1 = Point(0, 3) p2 = Point(4, 0) print(p1.distance(p2)) # 5.0 #yt class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def distance(self, other): return((self.x - other.x)**2 + (self.y - other.y) **2) ** 0.5 p1 = Point(10, 0) p2 = Point() print(p1.distance(p2))
-
定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切
class Circle: pi = 3.1415926 def __init__(self, r, x, y): self.r = r self.x = x self.y = y def area(self): return Circle.pi * self.r ** 2 def perimeter(self): return Circle.pi * self.r * 2 def is_inscribed(self, Circle): return self.r + Circle.r == ((self.x - Circle.x)**2 + (self.y - Circle.y)**2)**0.5 c1 = Circle(3, 0, 3) c2 = Circle(4, 4, 0) print(c1.is_inscribed(c2)) # False c1 = Circle(2.5, 0, 3) c2 = Circle(2.5, 4, 0) print(c1.is_inscribed(c2)) # True #yt class Circle: pi = 4.1415926 def __init__(self, r, center: Point): self.r = r self.center = center def area(self): return Circle.pi * self.r ** 2 def is_exterior_contact(self, other): return self.center.distance(other.center) == self.r +other.r c1 = Circle(10, Point()) c2 = Circle(10, Point(20, 0)) print(c1.is_exterior_contact(c2))
-
定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度
class LineSegment: def __init__(self, start, finish): self.start = start self.finish = finish def length(self): return self.finish - self.start l1 = LineSegment(0, 7) print(l1.length()) # 7 #yt class Line: def __init__(self:Point, start, end:Point): self.start = start self.end = end def length(self): return self.start.distance(self.end) l1 = Line(Point(),Point(40,30)) print(l1.length())
-
写一个斗地主游戏类(根据生活经验添加类的内容)
class FightLandlord: @classmethod def player(cls, player1, player2, player3): cls.player1 = player1 cls.player2 = player2 cls.player3 = player3 @classmethod def deal_cards(cls): print("发牌") @classmethod def sort_out(cls): print("整理牌") @classmethod def show(cls): print(f'{player1}的牌,{player2}的牌,{player3}的牌') player1 = '小明' player2 = '小红' player3 = '小花' FightLandlord.player(player1, player2, player3) FightLandlord.deal_cards() FightLandlord.sort_out() FightLandlord.show() # 发牌 # 整理牌 # 小明的牌,小红的牌,小花的牌