【類】是乙個函式包。類中可以放置函式和變數,類中的函式可以很方便的使用類中的變數。
在類中被定義的函式被稱為類的【方法】,描述的是這個類能做什麼。我們使用類名.函式名()的格式,就可以讓類的方法執行起來。在類中被定義的變數被稱為類的【屬性】。使用類名.變數名的格式,可以把類中的屬性的值提取出來。類的屬性可以修改,使用類名.變數名的格式,可以讓我們在類的外面,增加或修改類的屬性。
類方法和類屬性可以組合,需要用到@classmethod,中文意思是類方法。
class 類a():
變數1 = 100
變數2 = 200
@classmethod
def 函式1(cls):
print(cls.變數1)
print(cls.變數2)
類a.函式1()
為了把類中的變數傳遞給類中的函式,我們需要用到3個特定格式:
① 第乙個格式@classmethod的中文意思就是「類方法」,@classmethod宣告了函式1是類方法,這樣才能允許函式1使用類屬性中的資料。
② 第二個格式cls的意思是class的縮寫。如果類方法函式1想使用類屬性(也就是類中的變數),就要寫上cls為函式1的第乙個引數,也就是把這個類作為引數傳給自己,這樣就能被允許使用類中的資料。
③ 第三個格式是cls.變數。類方法想使用類屬性的時候,需要在這些變數名稱前加上cls
從【類的外部】增加/修改類屬性
class 幸運():
@classmethod
def 好運翻倍(cls):
print('好的,我把它存了起來,然後翻了888倍還給你:' + str(cls.幸運數*888))
# 或者這樣寫也可以:
# print('好的,我把它存了起來,然後翻了888倍還給你:%d' % (cls.幸運數*888))
幸運.幸運數 = int(input('你的幸運數是多少?請輸入乙個整數。'))
幸運.好運翻倍()
從類的內部增加/修改類屬性
class 念詩類():
一首詩 = ['《卜運算元》','我住長江頭,','君住長江尾。','日日思君不見君,','共飲長江水。']
@classmethod
def 念詩函式(cls):
cls.姓名 = input('請輸入你想給誰念詩:')
print("念給"+cls.姓名+'的詩')
for i in cls.一首詩:
print(i)
念詩類.念詩函式()
class hrsystem:
# 建立儲存員工名字的變數 name
name = ''
# 建立儲存員工工資的變數 salary
salary = 0
# 建立儲存員工績效的變數 kpi
kpi = 0
# 定義錄入員工資訊的類方法
@classmethod
def record(cls, name, salary, kpi):
cls.name = name
cls.salary = salary
cls.kpi = kpi
# 定義列印員工資訊的類方法
@classmethod
def print_record(cls):
if cls.check_name(): # 以 cls.check_name() 的返回值(0或1)作為判斷條件。
print(cls.name + '的工作資訊如下:')
print('本月工資:' + str(cls.salary))
print('本年績效:' + str(cls.kpi))
# 定義根據 kpi 評獎的類方法
@classmethod
def kpi_reward(cls):
if cls.kpi > 95:
print('恭喜' + cls.name + '拿到明星員工獎盃!')
elif cls.kpi <= 95 and cls.kpi >= 80:
print('恭喜' + cls.name + '拿到優秀員工獎盃!')
else:
print('很遺憾' + cls.name + '這次沒有評上獎盃,希望來年努力工作,勇創佳績!')
# 檢查錄入名稱是否正確的類方法
@classmethod
def check_name(cls):
if cls.name not in ['bob', 'candy', 'jony', 'kelly']:
print('錄入錯誤!' + cls.name + '不是本公司員工!')
return 0 # 設定返回值為0
else:
print('錄入正確~')
return 1 # 設定返回值為1
# 驗證結果的**
hrsystem.record('spy', 3000, 60)
hrsystem.print_record()
練習
class calendar:
date = '2020-08-08'
things =
@classmethod
def thing_done(cls, thing):#已完成的事情刪除
del cls.things[thing]
@classmethod
def add_thing(cls, thing, time):#增加將做事項
cls.things[thing] = time
calendar.thing_done('給父母買禮物')
calendar.add_thing('寫日記', '20:00')
print(calendar.things)
Python學習之類和物件
人 張三,李四,王五 人是類 張三,李四,王五,是具體的物件 class person def init self,name,birthdy self.name name self.self.birthday birthdy def say self,word print f 說 zhang sha...
python 之 類和物件
類和物件是物件導向程式設計的 兩個 核心概念 類就相當於製造飛機時的圖紙,是乙個模板,是負責建立物件的 物件就相當於用圖紙製造的飛機 在程式開發中,應該先有類,再有物件 只有乙個,而物件可以有很多個 在使用面相物件開發前,應該首先分析需求,確定一下,程式中需要包含哪些類!在程式開發中,要設計乙個類,...
Python 之類和物件(8)
物件導向 object oriented 的特徵 class mylist list pass 這一步的操作就是讓類mylist繼承了 list列表的方法。現在它可以使用列表裡所有的內建方法。list2 mylist 繼承父類的方法 38講 class derivedclass basename1,...