""" 1. 建立一個汽車類Auto,包括輪胎個數(shù),汽車顏色,車身重量,速度等屬性,并通過不同的構(gòu)造方法創(chuàng)建實例。 至少要求 汽車能夠加速 減速 停車。 再定義一個小汽車類CarAuto 繼承Auto 并添加空調(diào)、CD屬性,并且重新實現(xiàn)方法覆蓋加速、減速的方法 """
class Auto:
def __init__(self, wheel, color, weight, speed=0):
self.wheel = wheel
self.color = color
self.weight = weight
self.speed = speed
self._max_speed = 200 def up_speed(self, value):
panel_speed = self.speed + value
if panel_speed > self._max_speed:
self._max_speed = panel_speed
return '超速行駛當前車速%s' % self._max_speed
else:
return '加速行駛車速%s' % panel_speed
def slow_down(self, value):
if self.speed > value:
return '減速行駛',self.speed - value
else:
return 0 def stop(self):
if self.speed == 0:
return '停車' a1 = Auto(4, 'balck', 5)
print(a1.up_speed(50))
a1.speed = 90 print(a1.slow_down(50))
class CarAuto(Auto):
def __init__(self, air_condition=False, cd_rom=False, color='black', speed=0):
super(CarAuto, self).__init__(color, speed, weight='5tons')
self.air_condition = air_condition
self.cd_rom = cd_rom def up_speed(self, value):
super(CarAuto, self).up_speed(value)
a2 = CarAuto(True, True)
print(a2.up_speed(200))
2. 創(chuàng)建一個Person類,添加一個類字段用來統(tǒng)計Person類的對象的個數(shù)
class Person:
count = 0
def __init__(self, name, age, gender):
self.name = name
self.gender = gender
if 0 < age <= 105:
self.age = age
else:
raise ValueError
# if 0 <= gender <= 1:
# self.gender = gender
#
# else:
# raise ValueError
self.statistics()
@classmethod
def statistics(cls):
cls.count += 1
p1 = Person('MING', 22, '男')
print(Person.count)
p2 = Person('LI-NING', 56, '男')
print(Person.count)
3. 創(chuàng)建一個動物類,擁有屬性:性別、年齡、顏色、類型 。
要求打印這個類的對象的時候以'/XXX的對象: 性別-? 年齡-? 顏色-? 類型-?/' 的形式來打印
class Animal:
def __init__(self, gender, age, color, species):
self._age = age
self.color = color
self.species = species
if not gender or gender == 1:
self._gender = gender
else:
raise ValueError
@property
def gender(self):
if not self._gender:
return 'Male'
if self._gender == 1:
return 'Female'
@gender.setter
def gender(self, value):
raise ValueError
def __repr__(self):
return '/{}的對象:性別-{}, 年齡-{}, 顏色-{}, 種類{}/'.format(self.__class__.__name__, self.gender, self._age, self.color, self.species)
a1 = Animal(1, 5, 'black', '曼康基')
print(a1)
4. 寫一個圓類, 擁有屬性半徑、面積和周長;要求獲取面積和周長的時候的時候可以根據(jù)半徑的值把對應(yīng)的值取到。但是給面積和周長賦值的時候,程序直接崩潰,并且提示改屬性不能賦值
class Circle:
Pi = 3.1414926
def __init__(self, radius):
self.radius = radius
self._area = Circle.Pi * self.radius **2
self._perimeter = 2 * Circle.Pi * self.radius
@property
def area(self):
self._area = Circle.Pi * self.radius **2
return self._area
@area.setter
def area(self, value):
raise ValueError
@property
def perimeter(self):
self._perimeter = 2 * Circle.Pi * self.radius
return self._perimeter
@perimeter.setter
def perimeter(self, value):
raise ValueError
def __repr__(self):
return '/radius:{}, area:{}, perimeter:{}/'.format(self.radius, self.area, self.perimeter)
c1 = Circle(10)
print(c1)
5. 寫一個撲克類, 要求擁有發(fā)牌和洗牌的功能(具體的屬性和其他功能自己根據(jù)實際情況發(fā)揮)
KL;‘/.
class Poker:
def __init__(self, color, ajqk):
self.color = color
self.ajqk = ajqk
class Pokers:
color_list = ['?', '?', '?', '?']
ajqk_list = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
def __init__(self):
self.poker_list = []
self.framer1 = []
self.framer2 = []
self.landowner = []
self.ace_of_Base = []
for color in Pokers.color_list:
for ajqk in Pokers.ajqk_list:
self.poker_list.append(Poker(color, ajqk))
self.poker_list.append(Poker('Red', 'Joker'))
self.poker_list.append(Poker('Black', 'Joker'))
def poker_shuffle(self):
random.shuffle(self.poker_list)