10 Python物件導向程式設計:類和物件以及和Java的對比

救苦救难韩天尊發表於2024-09-03

本篇是 Python 系列教程第 10 篇,更多內容敬請訪問我的 Python 合集

這裡只介紹類和物件,self、屬性、方法、訪問控制、類繼承、方法重寫在後面的文章裡介紹

在Python中,類和物件是物件導向程式設計的基礎。

1 類的概念

類是一種建立物件的藍圖或模板。它定義了一組屬性(變數)和方法(函式),這些屬性和方法描述了該類的物件應該具有哪些特徵和行為。

2 定義一個類

在Python中,你可以使用class關鍵字來定義一個類。例如,定義一個名為Person的簡單類:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")
  • __init__方法是一個特殊的方法,稱為構造器,用於初始化類的新例項。
  • self引數代表類的例項本身,並且是類任何方法的第一個引數。
  • 類方法需要透過self來訪問類屬性。

3 建立物件

建立一個類的例項(即物件)非常簡單。只需呼叫類名後跟一對括號即可:

person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

4 訪問屬性和方法

可以透過點符號訪問物件的屬性和方法:

person1.display()  
# 輸出: Name: Alice, Age: 25
print(f"Name: {person2.name}, Age: {person2.age}")  
# 輸出: Name: Bob, Age: 30

Python 還有一個很牛逼的操作就是可以直接給物件賦值類裡不存在的屬性,比如我給 person2 的一個不存在的屬性 gender 賦值:

person2.gender = "男"
print(getattr(person2,"gender"))
# 輸出:男

5 和Java類的對比

5.1 類和檔案

在 Python 中,一個檔案可以包含多個類。我們新建一個 example.py 檔案,裡面建立兩個類,並在 main.py 檔案中使用它們。

example.py

class MyClass1:
    def __init__(self, value):
        self.value = value
        
    def display(self):
        print("MyClass1 Value is:", self.value)

class MyClass2:
    def __init__(self, value):
        self.value = value
        
    def display(self):
        print("MyClass2 Value is:", self.value)

你可以在另一個檔案中匯入並使用這些類:

main.py

from example import MyClass1, MyClass2

# 建立MyClass1的例項
instance1 = MyClass1("AAA")
instance1.display()
# 輸出:MyClass1 Value is: AAA

# 建立MyClass2的例項
instance2 = MyClass2("BBB")
instance2.display()
# 輸出:MyClass2 Value is: BBB

Java 一個檔案也可以有多個類,但只能有一個 public 的類,並且 public 的類名必須與檔名相一致。這是編譯器的基本要求。雖然可以有非 public 的類,但是在外部無法使用,只能在本檔案的類裡使用。

5.2 建構函式

Python 建構函式第一個引數是 self 代表類的例項本身,並且 self 是類任何方法的第一個引數。建構函式里用 self.xx = xx 賦值過的引數就是類的屬性,不用像 Java 一樣先宣告屬性。

相關文章