建立乙個汽車類auto,包括輪胎個數,汽車顏色,車身重量,速度等屬性,並通過不同的構造方法建立例項。至少要求 汽車能夠加速 減速 停車。 再定義乙個小汽車類carauto 繼承auto 並新增空調、cd屬性,並且重新實現方法覆蓋加速、減速的方法
class
auto
: stop_flag =
'停車'
accelerate_flag =
'加速'
slow_flag =
'減速'
def__init__
(self, color, weight, speed, tires)
: self.tires = tires
self.color = color
self.weight = weight
self.speed = speed
defaccelerate
(self)
:return auto.accelerate_flag
@classmethod
defslow
(cls)
:return cls.slow_flag
@staticmethod
defstop()
:return auto.stop_flag
class
carauto
(auto)
:def
__init__
(self, air, cd, color, weight, speed, tires=4)
:super()
.__init__(color, weight, speed, tires)
self.air =
none
self.cd =
none
defaccelerate
(self)
:return f'->加速!'
@classmethod
defslow
(cls)
:return f'->減速!'
c1 = carauto(
true
,true
,'white'
,120
,300
)print
(c1.accelerate_flag)
print
(c1.color)
print
(c1.stop())
print
(c1.accelerate())
print
(c1.slow(
))
建立乙個person類,新增乙個類欄位用來統計perosn類的物件的個數
class
person
: count =
0def
__init__
(self)
: person.count +=
1# print(person.count)
@classmethod
defobject_num
(cls)
:return f'呼叫person類的物件個數為:'
p1 = person(
)p2 = person(
)p3 = person(
)p4 = person(
)print
(person.object_num(
))
建立乙個動物類,擁有屬性:性別、年齡、顏色、型別 ,
要求列印這個類的物件的時候以』/***的物件: 性別-? 年齡-? 顏色-? 型別-?/』 的形式來列印
import re
class
animal
:def
__init__
(self, ***, age, color, species)
: self.*** = ***
self.age = age
self.color = color
self.species = species
def__repr__
(self)
: r1 = re.
compile
(r':'
) r2 = re.
compile
(r','
) strs =
str(self.__dict__)
str1 = re.sub(r1,
'-', strs)
str2 = re.sub(r2,
' ', str1)
return f'/的物件:/'
a1 = animal(
'male',20
,'yellow'
,'mammals'
)print
(a1)
寫乙個圓類, 擁有屬性半徑、面積和周長;要求獲取面積和周長的時候的時候可以根據半徑的值把對應的值取到。但是給面積和周長賦值的時候,程式直接崩潰,並且提示改屬性不能賦值
class
round
: pi =
3.14
def__init__
(self, radius)
: self.r = radius
# self._perimeter = 0
# self._area = 0
@property
defperimeter
(self)
:return
(self.r <<1)
* round.pi
@property
defarea
(self)
:return self.r**
2* round.pi
@perimeter.setter
defperimeter
(self, value)
:if value or value ==0:
raise valueerror
@area.setter
defarea
(self, value)
:if value or value ==0:
raise valueerror
o = round(3)
print
(o.perimeter)
print
(o.area)
寫乙個撲克類, 要求擁有發牌和洗牌的功能(具體的屬性和其他功能自己根據實際情況發揮)
import random
class
poker
: colors =
['♦'
,'♣'
,'♥'
,'♠'
] numbers =
['j'
,'q'
,'k'
,'a'
,'1'
,'2'
,'3'
,'4'
,'5'
,'6'
,'7'
,'8'
,'9'
,'10'
] @classmethod
defpoker
(cls)
: pokers =
[i + j for i in cls.colors for j in cls.numbers]
pokers.extend(
['joker'
,'joker'])
# print(pokers)
return pokers
@classmethod
defp_shuffle
(cls)
: s_poker = cls.poker(
) random.shuffle(s_poker)
return s_poker
@classmethod
defp_licensing
(cls)
: i_poker =
iter
(cls.p_shuffle())
a_cards =
b_cards =
c_cards =
for _ in
range(18
):next
(i_poker)
)next
(i_poker)
)next
(i_poker)
)return f'a的手牌為:\nb的手牌為:\nc的手牌為:'
print
(poker.poker())
print
(poker.p_shuffle())
print
(poker.p_licensing(
))
Day 15 物件導向2
day 15 物件屬性操作語法 1 物件.屬性名 屬性名不存在時會報錯 2 getattr.物件,屬性名 注意 屬性名要用 引起來 在屬性名後面加乙個引數表示預設值,在屬性名不存在時返回預設值 語法 1 物件.屬性名 值 屬性名存在時會修改 屬性值不存在時會新增 2 setattr 物件,屬性名 值...
Python專案 Day15 物件導向(高階
動態為物件繫結方法 from types import methodtype class person pass def displayme self print my genderis self.gender 給乙個例項繫結的方法,對另乙個例項是不起作用的 p1.displayme methodt...
檔案操作(day15)
呼叫函式可以使用被呼叫函式動態分配的 儲存區calloc函式也可以動態分配一組連續的 儲存區這個函式可以把所有動態分配的儲存區 內容設定成0 為了使用這個函式也需要包含stdlib.h標頭檔案 這個函式需要兩個引數,第乙個引數表示要 分配的儲存區個數,第二個引數表示單個 儲存區的大小 這個函式的返回...