Python學習之類和物件

2021-09-10 22:47:38 字數 3034 閱讀 6417

【類】是乙個函式包。類中可以放置函式和變數,類中的函式可以很方便的使用類中的變數。

在類中被定義的函式被稱為類的【方法】,描述的是這個類能做什麼。我們使用類名.函式名()的格式,就可以讓類的方法執行起來。在類中被定義的變數被稱為類的【屬性】。使用類名.變數名的格式,可以把類中的屬性的值提取出來。類的屬性可以修改,使用類名.變數名的格式,可以讓我們在類的外面,增加或修改類的屬性。

類方法和類屬性可以組合,需要用到@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,...