AdSense

網頁

2025/6/4

Python 簡單類別及物件

Python的類別(class)及其物件(object)的寫法如下。


下面建立一個類別Employee
定義了__init__()方法用於建立該類別的物件;
其有兩個屬性(property)_id_name,物件屬性又稱為物件變數(object variable)或實例變數(instance objects);
定義了屬性的getter和setter方法即get_id()set_id()get_name()set_name(),不過在3.11引入了property特性,getter和setter可改用@property裝飾器改寫;
定義了__str__()方法設定物件印出的內容,裡面使用了F-strings格式化字串
定義了__eq__()方法作為比較是否相等的邏輯。

class Employee:
    """Employee class"""
    def __init__(self, id, name):
        self._id = id
        self._name = name

    def get_id(self):
        return self._id
    
    def set_id(self, id):
        self._id = id
        
    def get_name(self):
        return self._name
    
    def set_name(self, name):
        self._name = name
        
    def __str__(self):
        return f'Employee{{id:{self._id},name:{self._name}}}'
    
    def __eq__(self, other): 
        if not isinstance(other, Employee):
            return NotImplemented
        return self._id == other._id and self._name == other._name
        

emp1 = Employee(1, "john")
print(emp1)            # Employee{id:1,name:john}
print(emp1.get_id())   # 1
print(emp1.get_name()) # john

emp1.set_name('jojo')
print(emp1) # Employee{id:1,name:jojo}

emp2 = Employee(1, "jojo") # Employee{id:1,name:johnny}
print(emp1 == emp2)        # True

"""Employee class"""是類別的文件註解docstring

物件變數前加上底線_,例如_id是Python的寫法慣例,意味著此變數僅限於物件內部使用。

方法第一個參數self為指向物件自己的變數,"self"的命名只是慣例。

執行印出以下:

Employee{id:1,name:john}
1
john
Employee{id:1,name:jojo}
True


沒有留言:

AdSense