類和對象

1、類和對象

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

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

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

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

2.1 定義對象

就拿將來咱們的選課系統來說,咱們先總結一套現實世界中的學生對象:code

  • 對象1:
    • 特徵:
      • 學校='oldboy'
      • 姓名='耗哥'
      • 年齡=18
      • 性別='male'
    • 技能:
      • 選課
  • 對象2:
    • 特徵:
      • 學校='oldboy'
      • 姓名='豬哥'
      • 年齡=17
      • 性別='male'
    • 技能:
      • 選課
  • 對象3:
    • 特徵:
      • 學校='oldboy'
      • 姓名='帥翔'
      • 年齡=19
      • 性別='female'
    • 技能:
      • 選課

2.2 定義對象

站在將來選課系統的角度,咱們還能夠總結現實世界中的學生類:對象

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

3、程序中定義類和對象

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
相關文章
相關標籤/搜索