大家好, 想問一下在python 可以像java 一樣做class type casting 嗎, 可以怎樣用python 表示?dcdf = (DCDF_120)arr.get(i);
DCDF_120 是下面code的child class, DCD 是parent class, getCutOffTime 是DCD的class method,
找了好久都找不到方法, 只是看見有人說decorator , 但不太懂, 希望大家幫忙. 謝謝.
public static Date getCutOffTime(ArrayList arr)
{
DCDF_120 dcdf = null;
Date t = null;
Date tmp = null;
for (int i = 0; i < arr.size(); ++i)
{
dcdf = (DCDF_120)arr.get(i);
tmp = dcdf.getIntime2();
if (t == null || (tmp != null && tmp.after(t))) t = tmp;
}
return t;
}
直接改變物件的 class 屬性即可。完整範例如下:
class Car:
def __init__(self, wheels=4):
self.wheels = wheels
def __repr__(self):
return 'I\'m a car.'
# Bus 繼承 Car,且多一個 get_wheels method
class Bus(Car):
def __init__(self, wheels=4):
super().__init__(wheels)
def __repr__(self):
return 'I\'m a bus.'
def get_wheels(self):
return self.wheels
arr = [Car(x) for x in range(10)]
print(arr[0].wheels)
# casting
arr[0].__class__ = Bus
print(arr[0].get_wheels())
實際專案開發可考慮使用『工廠模式』,可參閱【Day 08】工廠方法設計模式(Python)。