類和對象


一、類和對象

  • 類的意思:種類、分類、類別

對象是特征與技能的結合體,我可能有身高體重、而你也有身高體重,所以你會說你像我,但是你一定不會說你像阿貓阿狗。並且我和你其實就可以說成是一類,而你和選課系統不能說是一類,因此給出類的定義:類就是一系列對象相似的特征與技能的結合體。

在現實世界中:先有一個個具體存在的對象,然后隨着人類文明的發展才了分類的概念,既然現實世界中有類這個概念,Python程序中也一定有類這個概念,但是在Python程序中:必須先定義類,然后調用類來產生對象。

二、現實世界中定義類和對象

2.1 定義對象

就拿未來我們的選課系統來講,我們先總結一套現實世界中的學生對象:

  • 對象1:

    • 特征:
      • 學校='oldboy'
      • 姓名='耗哥'
      • 年齡=18
      • 性別='male'
    • 技能:
      • 選課
  • 對象2:

    • 特征:
      • 學校='oldboy'
      • 姓名='豬哥'
      • 年齡=17
      • 性別='male'
    • 技能:
      • 選課
  • 對象3:

    • 特征:
      • 學校='oldboy'
      • 姓名='帥翔'
      • 年齡=19
      • 性別='female'
    • 技能:
      • 選課

2.2 定義對象

站在未來選課系統的角度,我們還可以總結現實世界中的學生類:

  • 老男孩學生類:
    • 相似的特征:
      • 學校='oldboy'
    • 相似的技能
      • 選課

三、程序中定義類和對象

3.1 定義類

# 注意類中定義變量使用駝峰體
class OldboyStudent():
    school = 'oldboy'

    def choose_course(self):
        print('is choosing course')
  • 曾經定義函數,函數只檢測語法,不執行代碼,但是定義類的時候,類體代碼會在類定義階段就立刻執行,並且會產生一個類的名稱空間,也就是說類的本身其實就是一個容器/名稱空間,是用來存放名字的,這是類的用途之一

83-類與對象-名稱空間.jpg?x-oss-process=style/watermark

print(OldboyStudent.__dict__)
{'__module__': '__main__', 'school': 'oldboy', 'choose_course': <function OldboyStudent.choose_course at 0x10d653ae8>, '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None}
print(OldboyStudent.__dict__['school'])
oldboy
print(OldboyStudent.__dict__['choose_course'])
<function OldboyStudent.choose_course at 0x10d653ae8>
try:
    OldboyStudent.__dict__['choose_course']()
except Exception as e:
    print('error:', e)
error: choose_course() missing 1 required positional argument: 'self'
print(OldboyStudent.school)
oldboy
OldboyStudent.choose_course(111)
is choosing course
print(OldboyStudent.choose_course)
<function OldboyStudent.choose_course at 0x10d653ae8>
OldboyStudent.__dict__['choose_course']
<function __main__.OldboyStudent.choose_course(self)>
OldboyStudent.country='China'
OldboyStudent.__dict__['country']
'China'
OldboyStudent.country='CHINA'
OldboyStudent.__dict__['country']
'CHINA'
del OldboyStudent.school
print(OldboyStudent.__dict__)
{'__module__': '__main__', 'school': 'oldboy', 'choose_course': <function OldboyStudent.choose_course at 0x10d653ae8>, '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None, 'country': 'CHINA'}

3.2 定義對象

  • 調用類即可產生對象,調用類的過程,又稱為類的實例化,實例化的結果稱為類的對象/實例

83-類與對象-實例化.jpg?x-oss-process=style/watermark

stu1=OldboyStudent() # 調用類會得到一個返回值,該返回值就是類的一個具體存在的對象/實例
print(stu1.school)
oldboy
stu2=OldboyStudent() # 調用類會得到一個返回值,該返回值就是類的一個具體存在的對象/實例
print(stu2.school)
oldboy
stu3=OldboyStudent() # 調用類會得到一個返回值,該返回值就是類的一個具體存在的對象/實例
stu3.choose_course()
is choosing course


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM