天天看點

Python面向對象程式設計01:入門類和對象總結

前面寫了檔案的讀取和檔案處理等其他函數,裡面用到了os庫。

本來想分享os庫,發現這個庫可能對于初學者來說比較難,是以後面再等合适的時間談談,因為涉及了很多檔案系統的操作,比較偏Linux運維。

我們先看看面向對象程式設計吧,就是很多人口中談到的OOP(Object-oriented Programming)

什麼是面向對象程式設計?

我們是不是聽過面向過程,拿來放在一起對比就比較好了解了。

簡單來了解,面向過程就是一切用函數解決一切檔案,簡單粗暴!

面向對象是面向過程程式設計之後才出現了,沒有面向對象程式設計很多程式還不是照樣開發。

面向對象,也使用函數,但是多了一個網,這個網把一個或者多個函數,和資料關聯在一起,然後稱為一類事物,也就是程式中的‘類’(class)

定義類,從具體代碼來感受吧!

面向對象程式設計,首先提出的第一個概念就是‘class’,類:

#這就是一個class的定義代碼:
class hello_class():
    pass
    
      

然後通過class_name() 這樣調用來生産對象。

代碼稍微更新一下,我們看看:

class hello_class():
    pass

#輸出類資訊
print(hello_class)
print(type(hello_class))
#建立類的執行個體對象
print(hello_class())
print(type(hello_class()))
      

稍微補充一下:

print函數輸出類對象的結果:通常是<'class全名‘ object at id序列号>

下面是運作結果:

Python面向對象程式設計01:入門類和對象總結

這裡我們加入新知識點:類執行個體對象 , 通常直接說,執行個體。

執行個體是class産生的對象,所有某個hello_class對象的類型(通過type函數擷取)都必定是hello_class。

多個類和對象的觀察

看完一個類,我們再看看兩個類的對比,結果也是一緻的。

下面是兩個類的定義和生成對象的代碼展示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello


class student(object):
    “”“學委補充一下:__init___ 函數為類的初始化函數,在建立類對象執行個體的時候這個函數會被調用。”“”
    def __init__(self):
        print("hello, I am student")


class programmer(object):
    def __init__(self):
        print("hello, I am programmer")


class student(object):
    def __init__(self):
        print("hello, I am student")


class programmer(object):
    def __init__(self):
        print("hello, I am programmer")


s1 = student
print(s1)
p1 = programmer
print(p1)
s11 = student
print(s11)
p11 = programmer
print(p11)

print("*" * 16)
# 建立對象
s2 = student()
print(s2)
p2 = programmer()
print(p2)

# 建立對象
s3 = student()
print(s3)
p3 = programmer()
print(p3)
      

稍微解釋一下:

s1 和 p1 這兩個變量列印輸出結果是‘class’類型的。

s11 和 p11 這兩個變量列印輸出結果是‘class’類型的,但是s1跟s11,p1跟p11 是不變的。

s2 和 p2 這兩個變量列印輸出結果是’object’類型的。

s3 和 p3 這兩個變量列印輸出結果是’object’類型的。\

Python面向對象程式設計01:入門類和對象總結

初始化函數被調用了列印了對象資訊。

到這裡,大家應該都能知道class和object差別了吧

類: 描述了函數和屬性的固定關系

(類執行個體)對象: 基于這種固定關系的一個活生生的個體,它的id是變化的。

補充一下類的屬性(資料部分)

學委定義了一個student類,并建立了兩個學生對象。

直接複制運作下面的代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello


class student(object):
    def __init__(self, name):
        self.name = name

    def get_name(self):
        return self.name

    def set_name(self, name):
        self.name = name

    def study(self):
        print(f"{self.name} : 好好學習,天天向上!")



s1= student("小白")
print(s1)
print(s1.get_name())
print(s1.study())

s2 = student("學委的學生粉絲:哈哈哈")
print(s2)
print(s2.get_name())
print(s2.study())
      

我們看到他們的id總是不同的(運作幾次看看)。

然後每個學生都有一個name屬性(攜帶姓名資料),和三個函數屬性(分别用來擷取姓名,改名,學習)。

然後我們調用了每個學生的study函數,輸出了各自的學習狀态。

Python面向對象程式設計01:入門類和對象總結

總結

Python

語言的簡約設計,使得面向對象程式設計非常簡單,輕松就定義和和擷取對象了。

上面的代碼非常簡單,但是可以很好的感受到類和對象的呈現,多練習。