python_Class的使用學習方法_OOP_舉四個例子理解語法及實作_Class文件導入方法(兩環境)_類的init的常用功能
還記得在之前 C++學習過程中
我們有舉一個橘子裝箱過程
http://coolmandiary.blogspot.tw/2016/08/c1x.html
在 python 一樣概念只是 程式語法長的不太一樣
在 C# 也有介紹到 C# 中的 Class用法
http://coolmandiary.blogspot.tw/2016/09/cclass.html
物件導向(面向對象)
object-oriented program
物件(對象) = 屬性(靜態的) + 方法(函數def...:)
捨麼這實在太抽象了!!!!!!
舉個例子 有一隻狗這個對象
你目前有這個對象(物件)
然後你開始要設計 "狗" 這個物件 的設計藍圖(Class)
想想看一隻狗
會做哪些行為、動作
比方會吠、會走、會吃.... (方法)
它具有捨麼毛色、體重多種、幾隻腳 (靜態屬性)
想好之後我們就可以來進行Class的撰寫了
在 python 預設的 GUI Shell 中
File ---> New File
將程式寫好之後另存新檔(Save as)
之後針對dogClass文件再到上方的 Run ---> Run Module (快捷 F5)
你有沒有好奇 def 裏頭都有放置一個Self 這個參數
還記得我們在上一篇友介紹到
在python這個程式語言中默認參數
的觀念嗎
類的 function 定義上 需要在前方設置 self 參數 !!!!!!
沒有 self 參數 的後果
第一個Example 程式碼
====================================================================
想想
一個 "計算機" 物件 針對兩個數的四則運算
具有 加 減 乘 除 等四種方法(方法)
這台計算機 價格是多少(靜態屬性)
名字.....等等
在價格部份由於屬於 int 型態 可以搭配 str( ) 這個 BIF 函數
進行轉為字串
第二個Example 程式碼
主程式部分
類別部分
__init__的常用功能
這裡有點像之前在C# 跟 C++ 中 建構子的概念
在C++中我們對建構函式(constructor)
跟在C#中建構子
解釋為 定義類別的實體(Instance)建立之後,要進行初始化動作(賦值)
因此這裡我們改一下程式
第三個Example 程式碼(__init__用法)
主程式部分
類別部分
有時候我們會想把Class後頭的一些輸入參數設定默認參數!!!!
這時我們就可以 ignore 後頭的參數
其他皆為默認值
再舉最後一個例子
想想一台車子
一台車子具有其 "廠牌名字" (靜態屬性)
具有車牌號碼 "車號" .....等等
車子的顏色
車子的.......&*^%$#
難道 類的靜態屬性 我們只能用欄位方式表示(撰寫)嗎?????
我們可否用 方法 來試著撰寫看看呢 ?????
(方法)
當然可以瞜~~~~~
舉例來說我們要打印 豐田汽車的廠牌名字的話
我們可以這麼簡單寫
這裡我們是用 剛剛學的 __init__ method(self , ...)
來進行
首先我們回到pycharm IDE 再重新寫一次這個簡短的Code!!!
self會幫我們自動取得 name此方法
第四個Example 程式碼
主程式部分
類別部分
PS: 多行註解 用 三組單引號 ''' ..... '''
在 pycharm IDE 中 如果要引用外部檔案中的Class
要先 import 該檔名
檔案名.Class名稱.屬性
檔案名.Class名稱.方法
我們有舉一個橘子裝箱過程
http://coolmandiary.blogspot.tw/2016/08/c1x.html
在 python 一樣概念只是 程式語法長的不太一樣
在 C# 也有介紹到 C# 中的 Class用法
http://coolmandiary.blogspot.tw/2016/09/cclass.html
物件導向(面向對象)
object-oriented program
物件(對象) = 屬性(靜態的) + 方法(函數def...:)
捨麼這實在太抽象了!!!!!!
舉個例子 有一隻狗這個對象
你目前有這個對象(物件)
然後你開始要設計 "狗" 這個物件 的設計藍圖(Class)
想想看一隻狗
會做哪些行為、動作
比方會吠、會走、會吃.... (方法)
它具有捨麼毛色、體重多種、幾隻腳 (靜態屬性)
想好之後我們就可以來進行Class的撰寫了
在 python 預設的 GUI Shell 中
File ---> New File
將程式寫好之後另存新檔(Save as)
之後針對dogClass文件再到上方的 Run ---> Run Module (快捷 F5)
你有沒有好奇 def 裏頭都有放置一個Self 這個參數
還記得我們在上一篇友介紹到
在python這個程式語言中默認參數
的觀念嗎
類的 function 定義上 需要在前方設置 self 參數 !!!!!!
沒有 self 參數 的後果
第一個Example 程式碼
class Dog:#類別盡量以大寫字母開頭
"一個類的簡單例子"
#屬性
color = 'green'
weight = 10
legs = 4
#方法
def bark(self):
print("狗在吠叫")
def eat(self):
print("吃東西")
def walk(self):
print("走動")
====================================================================
想想
一個 "計算機" 物件 針對兩個數的四則運算
具有 加 減 乘 除 等四種方法(方法)
這台計算機 價格是多少(靜態屬性)
名字.....等等
在價格部份由於屬於 int 型態 可以搭配 str( ) 這個 BIF 函數
進行轉為字串
第二個Example 程式碼
主程式部分
#-*- coding: UTF-8 -*-
import class_Calculator
cal = class_Calculator.Calculator()
print("計算機名稱:"+cal.name)
print ("計算機價格:"+str(cal.price))
cal.add(8,4)
cal.sub(24,6)
cal.multi(8,6)
cal.divide(16,8)
類別部分
#-*- coding: UTF-8 -*-
class Calculator:
name = 'Good calculator' #類之屬性1
price = 18 #類之屬性2
#每一個功能以def來定義方法
def add(self,x,y): #在類為一個默認參數
#print (self.name) #針對Calculator此類之名字
resultAdd = x+y
print (resultAdd)
def sub(self,x,y):
resultSub = x-y
print (resultSub)
def multi(self,x,y):
print (x*y)
def divide(self,x,y):
print (x/y)
__init__的常用功能
在C++中我們對建構函式(constructor)
跟在C#中建構子
解釋為 定義類別的實體(Instance)建立之後,要進行初始化動作(賦值)
因此這裡我們改一下程式
第三個Example 程式碼(__init__用法)
主程式部分
#-*- coding: UTF-8 -*-
import class_Calculator
cal = class_Calculator.Calculator('好用計算機',80,50,40,150)
print("計算機名稱:"+cal.name)
print ("計算機價格:"+str(cal.price))
print ("計算機高:" + str(cal.h))
print ("計算機寬:" + str(cal.w))
print ("計算機重:" + str(cal.we))
cal.add(8,4)
cal.sub(24,6)
cal.multi(8,6)
cal.divide(16,8)
類別部分
#-*- coding: UTF-8 -*-
class Calculator:
#固有屬性
name = 'Good calculator' #類之屬性1
price = 18 #類之屬性2
#有點像建構子的概念(在建立類的同時給定這些屬性特定值)
def __init__(self , name , price , height , width , weight):
self.name = name
self.price = price
# 定義的屬性名字不一定要跟函數輸入的名字一樣
self.h = height
self.w = width
self.we = weight
#每一個功能以def來定義方法
def add(self,x,y): #在類為一個默認參數
#print (self.name) #針對Calculator此類之名字
resultAdd = x+y
print (resultAdd)
def sub(self,x,y):
resultSub = x-y
print (resultSub)
def multi(self,x,y):
print (x*y)
def divide(self,x,y):
print (x/y)
有時候我們會想把Class後頭的一些輸入參數設定默認參數!!!!
這時我們也可以預設就先給好這些值
這時我們就可以 ignore 後頭的參數
其他皆為默認值
再舉最後一個例子
想想一台車子
一台車子具有其 "廠牌名字" (靜態屬性)
具有車牌號碼 "車號" .....等等
車子的顏色
車子的.......&*^%$#
難道 類的靜態屬性 我們只能用欄位方式表示(撰寫)嗎?????
我們可否用 方法 來試著撰寫看看呢 ?????
(方法)
當然可以瞜~~~~~
舉例來說我們要打印 豐田汽車的廠牌名字的話
我們可以這麼簡單寫
這裡我們是用 剛剛學的 __init__ method(self , ...)
來進行
首先我們回到pycharm IDE 再重新寫一次這個簡短的Code!!!
self會幫我們自動取得 name此方法
第四個Example 程式碼
主程式部分
#-*- coding: UTF-8 -*-
import class_Calculator
import carClass
texi = carClass.Car('Toyota')
print (texi.nm)
texi.nm = 'NISSAN'
print (texi.nm)
'''
cal = class_Calculator.Calculator('好用計算機',80,48)
print("計算機名稱:"+cal.name)
print ("計算機價格:"+str(cal.price))
print ("計算機高:" + str(cal.h))
print ("計算機寬:" + str(cal.w))
print ("計算機重:" + str(cal.we))
'''
#cal.add(8,4)
#cal.sub(24,6)
#cal.multi(8,6)
#cal.divide(16,8)
類別部分
class Car:
def __init__(self , nm):
self.nm = nm
def name(self):
return self.nm
PS: 多行註解 用 三組單引號 ''' ..... '''
在 pycharm IDE 中 如果要引用外部檔案中的Class
要先 import 該檔名
檔案名.Class名稱.屬性
檔案名.Class名稱.方法
留言
張貼留言