- 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速
停车。 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法
class Auto:
def __init__(self, tyre_num: int, color: str, weight: int, speed=60):
self.tyre_num = tyre_num
self.color = color
self.weight = weight
self.speed = speed
def change_speed(self):
num = int(input('请输入速度变化'))
if num < 0:
if self.speed + num == 0:
return '停车'
else:
print('减速')
return '目前速度%d:' % (self.speed + num)
elif num > 0:
print('加速')
return '目前速度%d:' % (self.speed + num)
a1 = Auto(4, 'white', 1000)
# print(a1.change_speed())
class CarAuto(Auto):
def __init__(self, air_conditioner: bool, C_D: bool):
super().__init__(4, 'white', 1000)
self.air_conditioner = air_conditioner
self.C_D = C_D
def speed_change(self):
num = int(input('请输入速度变化:'))
if num < 0:
if num + self.speed == 0:
return '停车'
else:
print('减速')
return '目前速度%d' % (self.speed + num)
elif num > 0:
print('加速')
return '目前速度%d' % (self.speed + num)
c1 = CarAuto(True, False)
print(c1.speed_change())
2. 创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数
class Person:
count = 0
def __init__(self, name, gender, age=18):
self.name = name
self.age = age
self.gender = gender
Person.count += 1
def __repr__(self):
return ','.join(['<' + str(self.__dict__)[1:-1] + '>'])
p1 = Person('贝伦', '男')
print(Person.count)
p2 = Person('露西恩', '女')
print(Person.count)
p3 = Person('胡林', '男', 30)
print(Person.count)
print(p3.__repr__())
- 创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
要求打印这个类的对象的时候以'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/' 的形式来打印
class Animal:
def __init__(self, gender, age, color, type):
self.gender = gender
self.age = age
self.color = color
self.type = type
def __repr__(self): # 重写 __repr__方法
"""'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/'"""
return '{}的对象:性别-{},年龄-{},颜色-{},类型-{}'\
.format(self.__class__.__name__, self.gender, self.age, self.color, self.type)
class Cat(Animal):
pass
class Dog(Animal):
pass
a1 = Animal('雄', 5, 'yellow', 'tiger')
# a1.__repr__()
print(a1)
c1 = Cat('雄', 5, 'black', '黑猫警长')
# print(c1)
print(c1.__repr__())
d1 = Dog('雌', 3, 'white', '斑点狗')
print(d1)
class WriteError(Exception):
def str(self):
return '修改只读属性'
- 写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
from math import pi
class WriteError(Exception):
def __str__(self):
return '修改只读属性'
class Circle:
def __init__(self, radius:float):
self.radius = radius
self._area = radius**2*pi
self._perimeter = 2*pi*radius
@property
def area(self):
self._area = self.radius**2*pi
return self._area
@area.setter
def area(self, value):
raise WriteError
@property
def perimeter(self):
self._perimeter = 2*self.radius*pi
return self._perimeter
@perimeter.setter
def perimeter(self, value):
raise WriteError
def __repr__(self):
return '<radius: {}, area: {}, perimeter: {}>'.format(self.radius,\
self.area, self.perimeter)
c1 = Circle(5)
print(c1)
c2 = Circle(10)
print(c2)
# c1.perimeter = 10
# c1.area = 6