PYTHON機器學習自學/自修 整理[00020] ~ 語言技術:PYTHON GOSSIP(類別 建構/解構 和 類別繼承)
PYTHON機器學習自學/自修 整理[00020] ~ 語言技術:PYTHON GOSSIP(類別 建構/解構 和 類別繼承)
類別 建構/解構
import sys import decimal#精準度/精度 運算 import random class Some:#定義一個類別 #建構子 def __init__(self): print('__init__') #解構子 def __del__(self): print('__del__') s = Some() s = None#呼叫解構子 print('-----') s1 = Some() s2 = s1 del s1#呼叫解構子 del s2#因為s1已呼叫,所以s2不會再執行
類別繼承
import sys import decimal#精準度/精度 運算 import random class Account: def __init__(self, id, name): self.id = id self.name = name self.balance = 0 def deposit(self, amount): self.balance += amount def withdraw(self, amount): if amount <= self.balance: self.balance -= amount else: raise ValueError('餘額不足') def __str__(self): return ('Id:\t\t' + self.id + '\nName:\t\t' + self.name + '\nBalance:\t' + str(self.balance)) class CheckingAccount(Account):#被繼承類別寫在()內 def __init__(self, id, name): super(CheckingAccount, self).__init__(id, name) # 呼叫父類別__init__() self.overdraftlimit = 30000 def withdraw(self, amount): if amount <= self.balance + self.overdraftlimit: self.balance -= amount else: raise ValueError('超出信用') def __str__(self): return (super(CheckingAccount, self).__str__() + '\nOverdraft limit\t' + str(self.overdraftlimit)); acct = CheckingAccount('E1234', 'Justin Lin') print(acct, end='\n\n') acct.deposit(1000) # 使用 Account 的 deposit() 定義 print(acct, end='\n\n') acct.withdraw(2000) # 使用 CheckingAccount 的 withdraw() 定義 print(acct, end='\n\n')