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
沒有留言:
張貼留言