078 類和對象

1、類和對象

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

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

  • 在現實世界中:先有一個個具體存在的對象,而後隨着人類文明的發展才了分類的概念函數

  • 既然現實世界中有類這個概念,Python程序中也必定有類這個概念,可是在Python程序中:必須先定義類,而後調用類來產生對象。
  • 類:一切具備相同屬性和方法的對象組成的
  • 對象:含有屬性和方法學習

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

2.1定義對象

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

  • 對象1:
    • 特徵:
      • 學校 = ’xiwangzhongxue‘
      • 姓名 = ’小明‘
      • 年齡 = 18
      • 性別 = ’male‘
    • 技能:
      • 選課
      • 學習
  • 對象2:
    • 特徵:
      • 學校 = ’xiwangzhongxue‘
      • 姓名 = ’小紅‘
      • 年齡 = 18
      • 性別 = ’male‘
    • 技能:
      • 選課
      • 學習

2.2定義類

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

  • 但願中學學生類:
    • 類似的特徵:
      • 學校='xiwangzhongxue'
    • 類似的技能
      • 選課
      • 學習

3、程序中定義類和對象

3.1定義類

  • 曾經定義函數,函數只檢測語法,不執行代碼,可是定義類的時候,類體代碼會在類定義階段就馬上執行,而且會產生一個類的名稱空間,也就是說類的自己其實就是一個容器/名稱空間,是用來存放名字的,這是類的用途之一
  • 定義類名時咱們推薦使用駝峯體
    • 關鍵字class 類名:
class Students:
    # 定義對象相同的屬性
    shool = 'xiwangzhongxue'
    
    # 定義對象想的方法
    def choice(self):
        print('選課。。。。')
        
    def study(self):
        print('學習。。。。')
  • 使用類
    • 類名()
    • Student()

3.2定義對象

  • 調用類便可產生對象,調用類的過程,又稱爲類的實例化,實例化的結果稱爲類的對象/實例
  • 對象名 = 類名()
stu1 = Student() # 這個時候只是生成了一個對象stu1,對象自己沒有任何屬性
print(stu1) # 打印的只是stu1對象在定義的時候生成的內存地址

<main.Student object at 0x000001EE24F2C198>內存

4、類和對象的使用

4.1獲取類的屬性和方法

  • __dict__方法
  • 返回的時一個字典(文件執行的模式、屬性,方法(函數)的地址)
print(Student.__dict__)

{'module': 'main', 'school': 'oldboy', 'func1': <function Student.func1 at 0x000001EE25195620>, 'func2': <function Student.func2 at 0x000001EE2C0C59D8>, 'dict': <attribute 'dict' of 'Student' objects>, 'weakref': <attribute 'weakref' of 'Student' objects>, 'doc': None}it

4.2獲取對象的屬性和方法

  • __dict__方法
  • 返回是個字典
print(stu1.__dict__) # 返回的是一個空的字典,由於咱們在定義這個stu1對象的時候,沒有給它定義其餘的屬性

{}io

4.3類使用方法和對象使用類的方法的區別

  1. 類使用方法
  • 其實就是在調用函數
  • 類使用方法時,調用類的方法的時候必須向函數方法傳進對應的參數
Student.choice(stu1) # 函數的第一個參數則是定義的對象名

選課。。。。function

  1. 對象使用類的方法
  • 調用類裏的方法
  • 對象使用方法時,調用類不須要向方法傳第一個參數
stu1.choice():

選課。。。。class

5、對象的屬性賦值

5.1經過對象自身來賦值屬性

stu1.name = '小明'
print(stu1.__dict__)# 返回一個字典,字典包含的是對象本身的屬性集合
print(stu1.name) # 返回對象本身name的屬性

{’name‘:’小明‘}

小明

5.2經過類中的__init__的方法

# 定義一個學生類
class Student:
    # 定義類的相同屬性
    school = '但願中學'

    # 定義類的相同方法
    # 定義類的屬性方法
    def __init__(self,name):
        self.name = name

    def choice(self):
        print('選課...')

    def study(self):
        print('學習....')
        
 
# 實例化一個對象
stu1 = Student('小明')# ()括號裏傳的是對象stu2的name屬性值爲'小明'
print(stu1.__dict__)# 打印對象stu1的屬性集合
print(stu1.name)# 打印stu1的name的屬性值
相關文章
相關標籤/搜索