PYTHON機器學習自學/自修 整理[00020] ~ 語言技術:PYTHON GOSSIP(類別 建構/解構 和 類別繼承)

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')	

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *