Python 實體物件的建立與使用 - 上篇 - 實體屬性 Instance Attributes By 彭彭

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ธ.ค. 2024

ความคิดเห็น •

  • @wersdf6153
    @wersdf6153 6 ปีที่แล้ว +78

    用了幾周的時間把Python系列看完也操作完
    收音很棒、畫面也很棒、講的也很清楚
    受益無窮 超級感謝

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +2

      很高興對你有幫助,也謝謝你的回饋 :)

  • @AK-di6xs
    @AK-di6xs 3 ปีที่แล้ว +6

    感謝彭彭老師~
    # 實體物件的建立與使用- 上篇
    # 類別的兩種用法 1.類別與類別屬性 2.類別與實體物件、實體屬性
    # 實體物件
    # 透過類別建立 先定義類別,再透過類別建立實體物件
    # 建立 -> 使用 要先建立實體物件,然後才能使用實體屬性
    # 建立實體
    # 基本語法
    #class 類別名稱:
    #定義初始化函式:
    #def__init__(self): # 固定初始化函式定義是 兩個底線init兩個底線():
    #透過操作 self 來定義實體屬性
    # 建立實體物件,放入變數 obj 中
    #obj=類別名稱() # 呼叫初始化函式
    # 程式範例
    # class Point:
    # def __init__(self):
    # self.x=3 #self.屬性的名稱=資料放進去
    # self.y=4
    # 建立實體物件
    # 此實體物件包含 x 和 y 兩個實體屬性
    # p=Point()
    # 程式範例
    #class Point:
    #def __init__(self,x,y): # 除了放self之外 還可以放參數
    #self.x=x
    #self.y=y
    # 建立實體物件
    # 建立時,可直接傳入參數資料
    #p=Point(1,5) # 對應位置, 1 會放到 x , 5 會放到 y
    # 使用實體
    # 基本語法
    #實體物件.實體屬性名稱
    # 程式範例
    #class Point:
    #def __init__(self,x,y):
    #self.x=x
    #self.y=y
    # 建立實體物件,並取得實體屬性資料
    #p=Point(1,5)
    #print(p.x+p.y)
    #----------------------------
    # Point 實體物件的設計: 平面座標上的點
    class Point:
    def __init__(self,x,y):
    self.x=x
    self.y=y
    # 建立第一個實體物件
    p1=Point(3,4)
    print(p1.x,p1.y)
    # 建立第二個實體物件
    p2=Point(5,6)
    print(p2.x,p2.y)
    # FullName 實體物件的設計: 分開紀錄姓、名資料的全名
    class FullName:
    def __init__(self,first,last):
    self.first=first
    self.last=last
    name1=FullName("C.W.","Peng")
    print(name1.first,name1.last)
    name2=FullName("W.M.","Lai")
    print(name2.first,name2.last)

  • @ugagugagu1221
    @ugagugagu1221 2 ปีที่แล้ว +10

    老師您好,想請老師看一下我對類別、實體、屬性、方法的想法對不對:
    以人類為例,假設我定義人類有一個頭、兩隻手、兩隻腳,而你、我、他都是人類
    那"人類"就是一個類別,"一個頭、兩隻手、兩隻腳"就是類別的屬性(也就是人類共有的特徵),"你、我、他"就是這個類別的實體
    假設你身高180、體重70、會彈鋼琴,而我身高175、體重60、會打籃球
    那"身高、體重"就是實體的屬性(每個人有不一樣的特徵),而"彈鋼琴、打籃球"就是實體的方法(每個人會做的動作)
    所有類別和屬性都可以自行定義,目的是為了讓程式更貼近真實世界的描述

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      我覺得你說得很好呀,也很感謝你的分享,相信對其他人會有幫助的 :)

    • @ugagugagu1221
      @ugagugagu1221 2 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師

  • @bestteah
    @bestteah 5 ปีที่แล้ว +16

    謝謝老師,是你帶我進入真正的python世界,
    讓我真正開始編程,甚至應用在工作上

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      太好了,能夠對你有這樣的幫助我覺得很棒 :)

  • @carinachen3362
    @carinachen3362 4 ปีที่แล้ว +16

    #Point 實體物件的設計:平面座標上的點
    class Point:
    def __init__(self):
    self.x=3
    self.y=4
    #建立第一個實體物件
    p1=Point()
    print(p1.x,p1.y)
    #建立第二個實體物件
    p2=Point()
    print(p2.x,p2.y)
    class Point:
    def __init__(self,x,y):
    self.x=x
    self.y=y
    p1=Point(7,8)
    print(p1.x,p1.y)
    p2=Point(5,6)
    print(p2.x,p2.y)
    #Fullname 實體物件的設計:分開紀錄姓、名資料的全名
    class Fullname:
    def __init__(self):
    self.first="C.W"
    self.last="Peng"
    name1=Fullname()
    print(name1.first,name1.last)
    class Fullname:
    def __init__(self,first,last):
    self.first=first
    self.last=last
    name1=Fullname("Q.A","Chou")
    print(name1.first,name1.last)
    name2=Fullname("T.Y","Lin")
    print(name2.first,name2.last)

  • @ashefalijan
    @ashefalijan 3 ปีที่แล้ว +13

    謝謝老師的教學,現在自學跟上職訓局的課,往往還是有邏輯卡住的地方,都是回頭看彭彭老師的影片去打通...

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      很棒哦,謝謝你的回饋,很高興對你有幫助 :)

  • @derekh4298
    @derekh4298 ปีที่แล้ว +2

    跟Java比起來友善許多 但概念一樣 老師教得淺顯易懂

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      謝謝你的回饋,確實是友善許多沒錯 ~

  • @Ming-ce5fw
    @Ming-ce5fw 4 ปีที่แล้ว +4

    谢谢彭彭老师,讲得太好了!我居然可以坚持学到现在!感谢彭彭老师!!!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      哈哈哈,好哦,太好了 ~~~~

  • @張小照
    @張小照 3 หลายเดือนก่อน

    終於到17集啦,沒放棄又多看一集

  • @Yuan_tw
    @Yuan_tw 3 ปีที่แล้ว +2

    謝謝老師的教學,以前有看過一遍也跟著練習,但也就跟著練習沒有真真正正自己思考過,
    於是買了精通PYTHON,想說看著書自己好好思考練習題目,但很多還是看不太懂為什麼要突然要使用這些語法,
    像是DEF __INIT__(SELF): 就回來翻老師的講解,真的好清楚! 豁然開朗
    謝謝老師

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      好哦,謝謝你詳細的經驗分享,很高興對你有幫助哦 :)

  • @po-hsienli698
    @po-hsienli698 ปีที่แล้ว +2

    謝謝老師!
    14:00 那邊亂玩的時候
    發現每次 recompile 後的 print(Point()) 出來的記憶體位置都不一樣!
    我的理解是每次編譯的時候都會給創造出的新實體物件一個新的儲存位置對嗎?
    另外是針對相同的物件名稱,每次編譯的時候前一次的記憶體會被釋放嗎? 謝謝!

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +1

      實際的記憶體位置都是動態配置的,所以你觀察到的現象是很正常的 :)

  • @shon6745
    @shon6745 3 ปีที่แล้ว +5

    4:00
    這邊個人操作的時候發現一些事情
    1.屬性名稱可以使用Self以外的其他名稱,並不影響程式的運作,但是其他名稱不會標色,不曉得這樣會不會有問題
    2.self.x可以用類別名稱顯現,也就是用Point.x,也不影響程式的運作

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +7

      感謝你的分享 :)
      1. 可以的,不會有什麼問題,只是通常我們不會特別去違背常見的習慣。
      2. self.x 和 Point.x 我認知上會是不同的東西,所以要看看程式碼來確認所謂不影響程式運作的狀況是什麼。

  • @張家豪-u3v
    @張家豪-u3v 3 ปีที่แล้ว +6

    老師早上五點多都不用睡覺喔? 難怪教得那麼好 讚!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      哈哈哈哈 XDDDDD 人參壓 ~~~~~~~~

  • @薛薛-q5v
    @薛薛-q5v 3 ปีที่แล้ว +2

    謝謝老師 這支video看了3遍 哈哈哈

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      讚讚,希望最後有看懂 XDDDD

  • @jaychen5271
    @jaychen5271 6 ปีที่แล้ว +7

    等了好久,終於出了

  • @黃柏翔-e1v
    @黃柏翔-e1v 3 ปีที่แล้ว

    看書看老半天看這影片一下就會了,感謝洗澎澎老師

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      不客氣,很高興對你有幫助哦 :)

  • @masonsu983
    @masonsu983 3 ปีที่แล้ว +2

    #Point 實體物件的設計: 平面座標上的點
    class Point: #定義類別
    def __inint__(self): #定義初始化函式
    self.x=3
    self.y=4
    p1=Point() #建立實體物件-1
    print(p1.x,p1.y) #使用實體物件-1
    p2=Point() #建立實體物件-2
    print(p2.x,p2.y) #使用實體物件-2
    #較彈性寫法
    class Point:
    def __inint__(self,x,y):
    self.x=x
    self.y=y
    p1=Point(3,4) #建立實體物件-1
    print(p1.x,p1.y) #使用實體物件-1
    p2=Point(5,6) #建立實體物件-2
    print(p2.x,p2.y) #使用實體物件-2
    #FullName 實體物件的設計:分開紀錄姓、名資料的全名
    class FullName:
    def__inint__(self):
    self.first:"C.W."
    self.last:"Peng"
    name1=FullName()
    print(name1.first,name1.last)
    #較彈性寫法
    class FullName:
    def__inint__(self,first,last):
    self.first:"first"
    self.last:"last"
    name1=FullName("C.W.","Peng")
    print(name1.first,name1.last)
    namme2=FullName("T.Y","Lin")
    print(name2.first,name2.last)
    #定義類別是為了產生實體物件,操作實體物件的屬性

  • @kevinli5619
    @kevinli5619 ปีที่แล้ว

    不會瘋掉耶講得非常清楚一聽就懂

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      謝謝哪,這個回饋對我很有幫助 :)

  • @YYLfrank
    @YYLfrank 4 ปีที่แล้ว +2

    感謝,看懂了。
    最近摸了下Pandas的資料表處理,接觸了比較多的package使用,
    所以對於同樣問題,有不同的寫法、method使用,有比較多認識。
    最後回來再看這邊,就很快了解到__init__() 在這邊是做什麼的了,
    也可以猜到,package matplotlib 的寫法應該就是這樣做的,
    所以跟平常使用Pandas、Excel的邏輯很不一樣。
    我想這也就是為什麼剛入門python時會很麻煩。
    因為沒程式基礎,根本搞不懂是公式寫法還是物件寫法,(或是var、或是def())
    網路上每個人的解法都不一樣,很容易邏輯錯亂。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      謝謝你,很棒的分享 :)

  • @Terry290341
    @Terry290341 6 ปีที่แล้ว +4

    從第一集看到現在了 每集都一步一步地跟著學習 真的很感謝老師不辭辛勞地製作影片 覺得受益良多! 感謝老師~

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +1

      很高興對你有幫助 :)

  • @jason61y555
    @jason61y555 4 ปีที่แล้ว +3

    老師您好,我想請教一下,在看某些GitHub程式碼
    他們定義class時,裡面沒有看到__init__這個初始化函式,而是直接def其他函式
    這樣是不是就無法使用原本類別名稱的實體物件?
    例如class Point:
    def other(self):
    p = Point() 像這樣呼叫後是執行 other() 這個函式嗎?
    感謝老師~

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +4

      會有一個預設的初始化函式,這個預設的初始化函式不接受任何參數,也沒有做任何實際的工作。所以可以直接用 Point() 來建立實體物件。

  • @shiyoo123
    @shiyoo123 3 ปีที่แล้ว +3

    影片看來看去,不論內容還是聲音都還是老師的最好。物件導向之前學過,看影片雖然小懂,但還是沒有應用的完整架構。請問彭彭老師有相關例題或範例可以練習、參考嗎?謝謝!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +2

      物件導向本身適合比較大型的程式架構,所以完整的應用通常很難在入門的時候做教學,我會考量看看的,謝謝你的回饋和建議 :)

    • @austinli80160
      @austinli80160 3 ปีที่แล้ว

      希望有範例可以練習

  • @姚字丞
    @姚字丞 2 ปีที่แล้ว +1

    謝謝作者的製作。

  • @xiaoqqe2653
    @xiaoqqe2653 2 ปีที่แล้ว

    谢谢老师,轻松易懂。循序渐进。很有收获。

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      谢谢你的回馈,很高兴对你有帮助 :)

  • @1個顗任
    @1個顗任 9 หลายเดือนก่อน

    請問老師
    11:00
    為什麼要把Point放到P1變數裡面
    我直接打 print(Point.x,Point y) 的確顯示不出來

  • @劉品亦
    @劉品亦 6 ปีที่แล้ว +17

    學過c++再學python
    覺得py親切多了

  • @小萌张-l3e
    @小萌张-l3e 2 ปีที่แล้ว

    看了至少10个关于class类的影片 这个讲的最明白

  • @jifonghuang4090
    @jifonghuang4090 4 ปีที่แล้ว +2

    哈囉老師
    8:36投影片的print(p1.x+p1.y)是不是要改成print(p1.x,p1.y)?
    好像錯了~

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      謝謝你的回饋哦 :) 意思不太一樣,一個是把兩個數字加起來 XDDDD 或者想把數字分別印出來 ~~~~~

  • @Lees5366
    @Lees5366 8 หลายเดือนก่อน +1

    15:28
    老師好可愛哈哈

  • @蔡淑慧-w8y
    @蔡淑慧-w8y ปีที่แล้ว +1

    老師您好
    與您分享
    幫自己的帳戶寫bot作為代理帳戶方便付款或轉帳
    用pyhton寫成一個class物件
    從註冊到存錢進去
    (這個存錢是把現金號碼列帳進去並算出總額
    然後取得帳戶的負利率貸款來還原為現金
    至於身邊的現金就要寫上封存兩個字然後好好藏起來
    ---此時算銀行的庫存現金了)
    以後要付款或轉帳時就把這個class拿來使用(class名稱.def名稱)
    如何使用這個bot
    就是把要對商家或銀行處理的程序寫成code
    (用seleum就可以把後端與前端串接起來)
    先把這個class跑過,然後再開始作付款或轉帳(其實都是轉帳)
    這個ˋclass可以有
    設定def
    裡面設有常數,比如被代理帳戶的銀行代碼、銀行網址
    還有註冊def
    設有變數比如帳號(規定用儲值卡號)、密碼(規定與被代理帳戶同樣)、被代理帳戶餘額、使用者手機門號
    還有登入def
    設有帳號及密碼
    這些都要用input讓使用者填寫
    還有存款def這要掃描貨幣的號碼存檔並用參數加公式秀出最後總額
    會計程序
    botatm關聯款項得到銷帳單
    軟體得到帳單關聯款項得到代繳訂單
    兩者沖銷帳達成會計平衡

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      感謝你的分享,但我無法很明確地告訴你對還是不對。主因是提到的功能範圍太大,其實不適合用這樣的留言方式來確認細節 ~

  • @m0973277400
    @m0973277400 3 ปีที่แล้ว +3

    python 真的很適合新手,身為java工程師的我深刻感覺,學java不如學python
    教得很好感謝~
    但Java內有物件導向,在這邊完全理解,應該是說很簡單,還是有好處的

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      物件導向對很多人來說是門檻,但學過 Java 的人確實當年被迫一定要理解,就會覺得簡單了 :)

  • @yingchen163
    @yingchen163 ปีที่แล้ว

    讲的非常好👍

  • @q4690744
    @q4690744 5 ปีที่แล้ว +2

    彭彭老師您好:
    又再次來叨擾您了有事情想求教!這是我自己寫的一個小程式碼
    class point:
    def __init__(self,x1,y1,x2,y2):
    self.x1 = x1
    self.y1 = y1
    self.x2 = x2
    self.y2 = y2
    def distance(self) :
    d = ((self.x1-self.x2)**2+(self.y1-self.y2)**2)**0.5
    print('您所輸入的兩點座標距離為' + str(d))
    def slope(self):
    s = (y1-y2)/(x1-x2)
    print('您所輸入兩點的斜率為' + str(s))
    def funtion(self):
    s = (y1-y2)/(x1-x2)
    print('您所輸入兩點座標組成的直線方程式為:'+ 'Y-'+str(self.y1)+'='+str(s)+'(X-'+str(self.x1)+')')

    print('這是一個關於平面上兩個座標點的各種運算程式碼')

    x1=int(input('請輸入第一個座標的X值'))
    y1=int(input('請輸入第一個座標的Y值'))
    x2=int(input('請輸入第二個座標的X值'))
    y2=int(input('請輸入第二個座標的Y值'))
    p = point(x1,y1,x2,y2)
    ans = input('請問你想要計算的是'+'
    '+
    '(A)兩點距離'+'
    '+
    '(B)兩點斜率'+'
    '+
    '(C)兩點方程式'+'
    '+
    '請選擇:')
    if ans == "A":
    p.distance()
    elif ans == "B" :
    p.slope()
    elif ans == "C" :
    p.funtion()
    else :
    print('既然你亂選那就通通都給你')
    p.distance()
    p.slope()
    p.funtion()
    在最下面那邊 我有沒有什麼方式可以讓使用者可以輸入兩個英文字母例如"AB"
    讓PYTHON系統判斷使用者輸入的這個"AB"判斷為 "A" 跟 "B"
    同時讓這個程式碼最後可以硬出我設定選擇A跟B會出現的結果呢??
    再拜託老師您有空回答我了!!

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      判斷一下使用者輸入的文字長度,再把字串中的字母一一取出應該可以符合你的需求?

    • @user-px2jq1bm8t
      @user-px2jq1bm8t 5 ปีที่แล้ว

      提供另一種
      for choice in ans:
      (三個條件)

  • @ABC-je8yq
    @ABC-je8yq 3 ปีที่แล้ว +2

    類別名稱 + ( ) => 產生實體物件 10:50

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      感謝紀錄 :)

    • @ABC-je8yq
      @ABC-je8yq 3 ปีที่แล้ว

      @@cwpeng-course 謝謝 彭彭老師的教學影片,剛入門程式設計 就看老師的教學影片 來摸索這個虛擬世界 ^_^

  • @KS0219
    @KS0219 4 ปีที่แล้ว +2

    你好老師,我是用Mac 安裝python3
    class Point:
    def _init_(self):
    self.x=3
    self.y=4
    p1=Point()
    print(p1.x,p1.y)
    ~~~~~~~~
    Traceback (most recent call last):
    File "instance.py", line 7, in
    print(p1.x,p1.y)
    AttributeError: 'Point' object has no attribute 'x'
    執行terminal 時,跑出以上error
    請問老師問題出在?

    • @阿寶-l1p
      @阿寶-l1p 4 ปีที่แล้ว +2

      def _int_不對,要def __int__ _要兩個的長度

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      感謝 @古文寶 的回應,是這樣沒錯哦 :)

  • @jaychen5271
    @jaychen5271 6 ปีที่แล้ว +3

    恭喜澎澎破一萬👏👏👏👏

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +1

      耶 👏 謝謝你 :)

    • @wangmaoyo
      @wangmaoyo 6 ปีที่แล้ว

      老shi什么时候出下篇,python教学还有多少

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +3

      这一两个星期尽量,Python 的教学能持续我就持续,目前没有停止点。

    • @JU-sq5ek
      @JU-sq5ek 5 ปีที่แล้ว

      @@cwpeng-course 老師佛心來著

  • @ateyu0226
    @ateyu0226 4 ปีที่แล้ว

    感謝老師清楚詳細的教學,獲益良多

  • @jonasx2321
    @jonasx2321 4 ปีที่แล้ว +2

    老师,你好,请问为什么一定要初始化函式呢,有什么好处,如果不初始化会怎么样,谢谢老师

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +4

      初始化函式是用来建立实体物件用的程序,就是个规矩:想利用类别建立实体物件,就必须透过初始化函式。

    • @jonasx2321
      @jonasx2321 4 ปีที่แล้ว +1

      @@cwpeng-course 谢谢老师的回复,很喜欢你的视频。

  • @Tom-yn8ow
    @Tom-yn8ow 5 ปีที่แล้ว +1

    哈哈哈哈哈哈哈哈哈哈哈哈 瘋掉!!! PengPeng老師 你超棒!!!!

  • @紅血球-k1e
    @紅血球-k1e ปีที่แล้ว +1

    謝謝老師

  • @邱子昀-t4w
    @邱子昀-t4w 3 ปีที่แล้ว +3

    老師教的很清楚 看得懂
    但我想請教一個問題就是
    使用這個實體類別跟屬性來建立p1和p2
    為什麼不要直接寫
    p1=[3,4]
    p2=[5,6]這樣就好呢?

    • @彰師大許育瑋
      @彰師大許育瑋 3 ปีที่แล้ว +1

      我想應該是因為一開始就定義好這個Point類別,如果只打p1=[3,4] 那系統不會知道要取得的實體物件的位置,所以我們必須要讓系統知道我們要取的實體物件是從Point類別裡面~

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      都是可以的,物件的用途就是幫助我們包裝並描述資料。你用 List 表達也是一樣,就只是沒有被明確的定義成是 Point 和 x, y 的概念。

    • @恩-h1u
      @恩-h1u 2 ปีที่แล้ว

      因為這是基礎教學影片,單純用簡單的東西示範讓新手了解,以後複雜了會有一定需要用到物件導向的地方

  • @chenjenny4714
    @chenjenny4714 3 ปีที่แล้ว +1

    彭彭老師打擾你,想請教執行第一個練習就出現報錯。
    程式跟您一模一樣,如下:
    class Point:
    def __init__(self):
    self.x=3
    self.y=4
    p1=Point()
    print(p1.x,p1.y)
    出現:syntax error near unexpected token `(' 報錯
    不知道是哪裡出錯了?

    • @chenjenny4714
      @chenjenny4714 3 ปีที่แล้ว +1

      彭彭老師,剛發現要我shell使用vsh,切換之後程式就跑出來了。
      但我不知道為什麼換shell就可以了 >

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      可能是執行版本的問題,確認一下你是否使用 python3 來執行呢?如果是 Mac 建議執行命令要打:python3 檔案名稱

  • @aapplefish
    @aapplefish 4 ปีที่แล้ว +7

    類別的兩種用法:
    1.類別與類別屬性
    2.類別與實體物件、實體屬性
    *實體物件*
    《透過類別建立》先定義類別,再透過類別建立實體物件
    《建立>使用》要先建立實體物件,然後才能使用實體屬性
    *建立實體*
    《基本語法》
    class 類別名稱:
    # 定義初始化函式
    def __init__(self):
    透過操作self來定義實體屬性
    # 建立實體物件,放入變數obj中
    obj = 類別名稱() # 呼叫初始化函式
    《程式範例01》
    class Point:
    def __init__(self):
    self.x = 3
    self.y = 4
    # 建立實體物件
    # 此實體物件包含x和y兩個實體屬性
    p = Point()
    《程式範例02》
    class Point:
    def __init__(self,x,y):
    self.x = x
    self.y = y
    # 建立實體物件
    # 建立時,可直接傳入參數資料
    p = Point(1,5)
    *使用實體*
    《基本語法》實體物件.實體屬性名稱
    《程式範例》
    class Point:
    def __init__(self,x,y):
    self.x = x
    self.y = y
    # 建立實體物件,並取得實體屬性資料
    p = Point(1,5)
    print(p.x+p.y)
    # Point 實體物件的設計:平面座標上的點01
    class Point:
    def __init__(self):
    self.x = 3
    self.y = 4
    # 建立第一個實體物件
    p1 = Point()
    print(p1.x,p1.y) # 3 4
    # 建立第二個實體物件
    p1 = Point()
    print(p1.x,p1.y) # 3 4
    # -------
    # Point 實體物件的設計:平面座標上的點02
    class Point:
    def __init__(self,x,y):
    self.x = x
    self.y = y
    # 建立第一個實體物件
    p1 = Point(3,4)
    print(p1.x,p1.y) # 3 4
    # 建立第二個實體物件
    p1 = Point(5,6)
    print(p1.x,p1.y) # 5 6
    # -------
    # FullName 實體物件的側記:分開紀錄姓、名資料的全名
    # 01
    class FullName:
    def __init__(self):
    self.first = "C.W"
    self.last = "Peng"
    name1 = FullName()
    print(name1.first, name1.last) # C.W. Peng
    # 02
    class FullName:
    def __init__(self,first,last):
    self.first = first
    self.last = last
    name1 = FullName("C.W","Peng")
    print(name1.first,name1.last) # C.W. Peng
    name2 = FullName("T.Y.", "Lin")
    print(name2.first,name2.last) # T.Y. Lin

  • @阿公-x2j
    @阿公-x2j 2 ปีที่แล้ว +1

    這和上一篇的類別定義,算是延伸出來的嗎?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      其實就是一起的,只是分成兩段來講,不要一下子講太多 ~

    • @阿公-x2j
      @阿公-x2j 2 ปีที่แล้ว

      @@cwpeng-course 感謝老師回覆

  • @Jashiwa2012
    @Jashiwa2012 6 ปีที่แล้ว +2

    老師,照著打會有一行卡住??
    File "C:\Users\User\Documents\Python training\ObjectDesign01.py", line 24
    def__init__(self,x,y):
    ^
    SyntaxError: invalid syntax
    請問是什麼原因? 謝謝老師
    class Point1:
    def__init__(self,x,y): --------->此處卡住
    self.x=x
    self.y=y
    #建立實體物件
    #建立時,可直接傳入參數資料
    p1=Point1(1,5)
    print(p1.x,p1.y)

    • @Jashiwa2012
      @Jashiwa2012 6 ปีที่แล้ว +3

      我找到了 !!!! def__init__,應該為def __init__
      中間少了空格

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +1

      有解決就好 :)

    • @呂錦川
      @呂錦川 5 ปีที่แล้ว +3

      @@Jashiwa2012 對不起 我的問題與你相同 但我查不出在那裏少嘞空格 可否明示更清楚一點好嗎?

    • @呂錦川
      @呂錦川 5 ปีที่แล้ว +1

      謝謝 我努力再找一次也找到了謝謝!!!

  • @mkadeu17k
    @mkadeu17k 5 ปีที่แล้ว +2

    請教老師一下,
    我打完程式碼但跑不出來, 出現以下結果
    File "test-class2.py", line 4
    def__init__(self):
    ^
    SyntaxError: invalid syntax
    我檢查我的版本已經是3.7.3 64-bit最新的

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      可能有一些隱藏的字元不小心打進去了,建議刪除整行重打,注意一下該空白的地方要空白。

    • @bjliao1349
      @bjliao1349 5 ปีที่แล้ว +2

      def 後要空一格,讓def有顏色
      因為我也犯一樣的錯 xd

    • @apsincsoros1538
      @apsincsoros1538 5 ปีที่แล้ว +2

      注意Python是用空格来缩进的,以及每一个关键字与名之间是需要空格来分开的,不然Python编译器会误以为是上一个关键字的延续

    • @apsincsoros1538
      @apsincsoros1538 5 ปีที่แล้ว

      注意Python是用空格来缩进的,以及每一个关键字与名之间是需要空格来分开的,不然Python编译器会误以为是上一个关键字的延续

  • @1989chinese
    @1989chinese 4 ปีที่แล้ว +3

    谢谢您彭彭老师,您教会了我python,我好想继续跟您学js,可是我在大陆没办法充钱,一打开那个页面就不停加载,我可以直接把钱给您吗

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      我的频道有很多免费的 JS 教学,可以先找找看 :)
      付费的部份不要勉强哪,希望之后 TH-cam 有机会直接开放 ~~~

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      另外,很高兴对你有帮助 :)

    • @1989chinese
      @1989chinese 4 ปีที่แล้ว

      @@cwpeng-course 谢谢彭彭老师的回复,谢谢老师

  • @Bo-Xun-Xiao
    @Bo-Xun-Xiao ปีที่แล้ว

    彭彭老師您好,想請問下若只想學資料分析處理的技術,有哪些影片的內容是不用太過糾結的嗎?目前只想把python套件Matplotlib、Numpy跟Pandas學完就好。

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      不管要學什麼,你後面提到的那些都是,入門的內容大概都建議要學過,不一定要很熟,但要走過一次,之後應用的時候自然會越來越熟悉。

    • @Bo-Xun-Xiao
      @Bo-Xun-Xiao ปีที่แล้ว +1

      @@cwpeng-course 謝謝彭彭老師!好剛好您今天開始拍Matplotlib的教學影片,非常感謝。

  • @eric7567
    @eric7567 ปีที่แล้ว

    謝謝老師的新手教學影片,但看到現在開始糊塗,想請教老師。
    看起來函式、模組、類別、實體,都可以在程式內呼叫並使用,那...他們最主要的差別在哪裡呢? 什麼時候會使用到函式或模組等....

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      你想要把一段程式包裝起來重複呼叫使用就使用函式,程式碼全部放在一個檔案看起來太過肥大,就分成多個程式檔案然後引入後使用,就是模組。

  • @a48941101
    @a48941101 6 ปีที่แล้ว +1

    受益良多,謝謝老師!

  • @peilingLeslieLiu
    @peilingLeslieLiu 5 ปีที่แล้ว +2

    Great lecture. Thank you!

  • @austinli80160
    @austinli80160 3 ปีที่แล้ว +1

    除了入門教學,想問一下會不會有進階課程呢?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      會持續提供更多教學內容,目前你可以在我的頻道中找到其他課程嘍 ~

  • @chilin2314
    @chilin2314 4 ปีที่แล้ว +2

    看完JS 建構子教學,又看了一次python實體物件,把JS範例應用在python
    感覺是不是像這樣呢 >

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      是哦,背後的概念是對應的沒錯,用得很棒哦 :)

  • @gracehsu7254
    @gracehsu7254 4 ปีที่แล้ว

    感謝老師細心教導

  • @王孟肜
    @王孟肜 3 ปีที่แล้ว +1

    想請問這個跟類別的使用最大的差異為何,據老師所說是能使用一個以上的實體物件?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +4

      對哦,類別只有一份,實體物件則根據需要可以產生很多個 ~

  • @paggie90
    @paggie90 4 ปีที่แล้ว

    請問在執行FullName時為什麼出現錯誤碼, 是哪裡有問題嗎??
    麻煩老師解惑,謝謝!!
    Traceback (most recent call last):
    File "17_instance.py", line 28, in
    print(name1.first, name1.last)
    AttributeError: 'FullName' object has no attribute 'first'

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      可能要看你的完整程式,才有辦法進一步判斷哦 ~

  • @kuei-haoshih4308
    @kuei-haoshih4308 2 ปีที่แล้ว

    老師您好,我是使用spyder去寫的,我按照您的步驟去寫,都跟您寫得一模一樣,但是他都顯示'FullName' object has no attribute 'first',請問是開發環境的問題還是........

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      物件的部份一般不會是開發環境的問題,就請仔細確認程式碼嘍

  • @ednaho5536
    @ednaho5536 6 ปีที่แล้ว +1

    謝謝老師!

  • @ender8315
    @ender8315 3 ปีที่แล้ว

    請問之前整套課程的最後,是不是有教建立小遊戲?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      好像沒有耶,可能是別的老師或單位提供的課程吧 ~

  • @CK-bu5wh
    @CK-bu5wh 3 ปีที่แล้ว +1

    彭彭老師, 我想請問一下這只意思是什麼嗎?
    在網上面看到的, 也是在class裡面,
    (self, A: str, B: str) -> bool

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      看起來不太像 Python,你可能要把看到的資料給我看看,我比較能判斷狀況 ~

  • @hsiehhao-yun3056
    @hsiehhao-yun3056 4 ปีที่แล้ว +2

    一開始的確被這實體物件,實體屬性搞很矇
    ˋ不管接著聽反正能理解,只是不曉得在甚麼情況下會需要用到

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      先學會一些基礎概念放著 XD
      實際上如果程式不夠龐大,我們不太使用這些工具來製造更多的結構複雜程度 ~

  • @詹耕銓
    @詹耕銓 4 ปีที่แล้ว

    Peng Peng老師 請問 第七張投影片裡面的obj是什麼???

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      某個隨意建立的變數名稱 ~

    • @詹耕銓
      @詹耕銓 4 ปีที่แล้ว +1

      彭彭的課程 好的👌

  • @蘇柏廷
    @蘇柏廷 4 ปีที่แล้ว

    我想請問在做GUI的時候
    加上self的屬性或函式是否會顯示在介面上
    可以這樣理解嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      好像沒辦法統一這樣理解,要更細一點 ~

  • @jaychen5271
    @jaychen5271 6 ปีที่แล้ว +2

    不好意思,請問類別有什麼用途?

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +2

      用來做程式碼的包裝嘍。
      實際的需求,通常是來自於程式越來越龐大,至少寫了數百行,才會開始感覺到為什麼要有這些語法工具來包裝程式。

    • @jaychen5271
      @jaychen5271 6 ปีที่แล้ว +1

      @@cwpeng-course 好的,謝謝!

    • @JU-sq5ek
      @JU-sq5ek 5 ปีที่แล้ว +1

      @@cwpeng-course 程式碼的包裝就用模組即可 ,為何還有類別? 兩者用途差異是?

    • @Hank-qw5jl
      @Hank-qw5jl 5 ปีที่แล้ว +1

      @@JU-sq5ek 因為要產生"物件", 程式碼如果太大, 用的著

  • @jackielee4418
    @jackielee4418 4 ปีที่แล้ว

    謝謝彭彭老師

  • @CRJakaAnfer
    @CRJakaAnfer 3 ปีที่แล้ว

    在 Python 所謂實體物件 概念和目的應該就同其他語言 constructor 一樣對吧?

  • @makerchen8565
    @makerchen8565 3 ปีที่แล้ว +1

    這就是 其他程式語言 的 建構式(子) 啊!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      是哦,很接近的概念沒錯 ~

  • @jaychen5271
    @jaychen5271 5 ปีที่แล้ว +2

    所以 self 就等於 實體物件?

  • @chuanliu2355
    @chuanliu2355 5 ปีที่แล้ว

    老師您好 想請問一下執行的時候 突然變成這樣 是改到設定嗎 試了很多次還是一樣 麻煩老師了謝謝!
    PS E:\python-training> python instance.py
    C:\Users\

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      看起來沒有特別的問題,不知道有沒有更多資訊,好像無法判斷狀況 @@a

  • @pei-chiwang3021
    @pei-chiwang3021 5 ปีที่แล้ว

    想請問彭彭老師一個問題,為甚麼已經有上一支影片中提到的類別使用方法,卻還會再設計一個不同的撰寫方式呢?

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +9

      每種語法有他的適用情境,初學沒有真實的開發經驗,通常很難體會也很正常。
      實體物件可以幫助某些需要建立大量類似資料的程式,更有效率地被撰寫和維護嘍 :)

  • @tim9728
    @tim9728 2 ปีที่แล้ว +1

    凌晨五點啊!

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      是的,作息不正常 @@a

  • @jktv193
    @jktv193 3 ปีที่แล้ว

    可以教一下Debug嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      我没有太多特别的技巧,就是有问题的时候仔细去理解错误讯息在说什么,从中找到可能的错误来源 ~

  • @frankchen6160
    @frankchen6160 4 ปีที่แล้ว

    16:32 這邊全選註解怎麼辦到的?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      可以按 ctrl+/ 試試看 ~

  • @Lan-r2y
    @Lan-r2y 5 ปีที่แล้ว

    請問老師,最後一個程式
    name1=FullName("C.W","Lin")
    為什麼改成name1=FullName(C.W,Lin) 程式會跑不出來呢?
    我是參考上一個數字的
    p1=Point(3,4)
    FullName中 為什麼一定要加" "
    麻煩老師解惑了,謝謝😣

    • @JU-sq5ek
      @JU-sq5ek 5 ปีที่แล้ว +1

      3,4是int(數字型態),C.W,Lin是str(字串型態),字串一定要加" ",否則程式讀不到字串

    • @Lan-r2y
      @Lan-r2y 5 ปีที่แล้ว +1

      @@JU-sq5ek 喔喔 謝謝你我了解了

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      感謝 @alemapnil L 的回答,確實是如此 :)

  • @chenapple9674
    @chenapple9674 5 ปีที่แล้ว +3

    visual studio coad本來用的好好的,因右下出現建議安裝的訊息,我不清楚是什麼就按install,安裝好後還正常,隔天開visual studio coad 後執行 pathon就不能用,究竟是何原因?顯示錯誤訊息如下:
    TERMINAL內顯示的訊息
    pathon : 無法辨識 'pathon' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請確認路徑是否正確
    ,然後再試一次。
    位於 線路:1 字元:1
    + pathon class.py
    + ~~~~~~
    + CategoryInfo : ObjectNotFound: (pathon:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
    OUTPUT內顯示的訊息
    Starting Jedi Python language engine.
    ##########Linting Output - pylint##########
    --------------------------------------------------------------------
    Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      打錯字?python ~

    • @chenapple9674
      @chenapple9674 5 ปีที่แล้ว

      @@cwpeng-course 棒棒棒!感謝彭彭老師的提點,困擾了好幾天的問題竟然是出了這麼離譜的錯,見笑了。

  • @我想學英文
    @我想學英文 3 ปีที่แล้ว +2

    initialized

  • @shenghualiu5496
    @shenghualiu5496 3 ปีที่แล้ว +2

    實體物件真的比較難懂 不知道為什麼有需要建立物件 >

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +3

      確實簡短的程式其實沒有建立物件的必要,這邊就只是先學語法和操作,以後程式變複雜了,真的有需要的時候才知道怎麼寫嘍 ~

  • @xiiiiiixi
    @xiiiiiixi 2 ปีที่แล้ว +1

    都擺在第17回了~不會瘋掉啦XD 相信大家都能了解的

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      哈哈哈,這樣最好了 :)

  • @bensonlee1140
    @bensonlee1140 3 ปีที่แล้ว

    名詞建議多用英文講解

  • @animallife6417
    @animallife6417 3 ปีที่แล้ว +1

    我的直覺告訴我,TY Lin絕對不是一個隨便想出來的名字

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      但它真的是一個隨便想出來的名字 XDDDD

    • @denzelh2283
      @denzelh2283 3 ปีที่แล้ว

      看到這裡快笑死

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +2

      XDDDD

  • @xiaotengxia1841
    @xiaotengxia1841 4 ปีที่แล้ว +1

    说吧,是不是暗恋LinTY

  • @justices_xs
    @justices_xs 3 ปีที่แล้ว

    常常碰到class 就跳過去的我竟然懂了

  • @yangliyeh5510
    @yangliyeh5510 6 ปีที่แล้ว +1

    謝謝老師~