or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Python
實作前導課程:class & object Part I
2022 / 4 / 15
Tony
其實你已經看過class了?!
先前的課程教過
type()
函式,可以回傳指定物件的型態
但你有認真看那個"型態"是甚麼嗎?
Example
他們的資料型態前面都有一個class,代表
int, str等等的資料型態其實都是不同的class(類別)
而這些值、變數則都是那些Class的物件(object)
有時候我們會需要更複雜,但是Python沒有內建的資料結構
這個時候就要自己寫一個class出來
寫寫看簡單的class
我們可以寫一個簡單的class來玩玩看
__init__函式:有這個class的物件被創造的時候會自動執行的函式
class裡面的函式,多數時候第一個引數都會是
self
,代表執行該函式的物件宣告物件並跟函式互動
class之間的互動
有的時候你會需要不同的複雜資料結構彼此幫忙
以"課程"跟"學生"為例
模板
__init__:
設定課程名稱、學生上限、參加的學生(用一個list儲存)
add_student():
還沒滿人時,把要參加的學生加進課程裡面
get_average_grade():
算出學生們的平均分數
完整Code
繼承 Inheritance
想像你想要寫\(n\)個class,分別代表\(n\)種課程
它們都有名稱、短介紹、開課人數
其中有\(k\)種課程要收費,\(m\)種課程只開放半年
想想看要怎麼寫?
你可以一個一個像這樣:
但是這樣太慢了,而且太多行了,好複雜
有沒有更方便的寫法?
繼承:讓一個子類別(Chind_clsss)可以使用母類別(Parent_class)所有的函式,但不用全部寫出來
並且接受子類別自己重新調整、更新母類別寫過的函式
舉例:我要寫兩個class分別代表狗跟貓
他們都有名字、年紀、顏色,也都會叫
所以我先寫一個寵物class讓他們繼承
繼承的寫法:把Parent_class寫在Child_class的名稱後面,用小括號包起來
使用Parent_class的函式:super()
super()
代表現在這個class的Parent_class為什麼要學class?
優點: