Zi 字媒體
2017-07-25T20:27:27+00:00
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')
寫了
5860316篇文章,獲得
23313次喜歡