import os
import sys
import copy
from functools import reduce


'''
    類別 - 繼承 
    
        終於講解到這一章節了,在OOP的世界裡面,我認為很重要的知識其中之一,就是繼承。
        
        在類別裡面,被繼承的類別我們稱為 父類(paareent class),繼承的類別稱為子類(child class)        當然還有許多叫法,比如說 基底類別、超類別之類的別名。
        
        而類別繼承最大的優點,就是父類別有許多 "公有" 的方法或屬性,在子類別中你不用再重新設計,
        直接拿來用就好。
        
        比如你爸有一間房子,房子裡面有個銀子,你是他兒子,所以你可以使用他的房子、銀子,這兩個是他開放給你用的,
        但是 ! 總有一些是不能共用的,而不能共用的,你爸就會設為private,例如.... 呵呵,不好說。
        
        反正,他給你用的你就能用,他不給你用的你就不能用,大概這樣想,會比較有感覺。
'''
class Father():
    def __init__(self ):
        self.__monry = 999

    def home(self):
        print("Taipei")

    def getMoney(self):
        return self.__monry


class Son(Father):
    pass


def main():
    Item = Father()
    Eric = Son()

    Item.home() #Taipei
    Eric.home() #Taipei

    print(Eric.getMoney())

if (__name__=='__main__'):
    main()

 

 

Eric 發表在 痞客邦 留言(0) 人氣()

import os
import sys
import copy
from functools import reduce


'''
    #淺談方法與屬性的類型 
    
        簡單來說,在設計python物件導向程式的時候,可以把類別分為兩個種類
            1. 實例方法 (屬性)
            2. 類別方法 (屬性)
        
        1.  實例的方法與屬性的特色,就是有self,屬性開頭是self,同時所有方法的第一個參數
self,這些是建立class object的時候,屬於屬性的一部分。
        2.  類別的方法前面則是@classmethod,不一樣的是,她第一個參數習慣是用cls,而類別
            方法與屬性不需要實例化,並且,類別的屬性會隨時被更新。
        
'''
class ABCD():
    counter = 0
    def __init__(self):         #類別屬性,可由類別本身調用
        ABCD.counter +=1        #更新
    @classmethod                #類別方法,可由類別本身調用
    def class_show_counter(cls):
        print("class method : counter = %d , counter =%d "% (cls.counter,ABCD.counter))

    '''
        補充: staticmethodclassmethod都可以直接用 類.方法名() 來直接使用,兩個的區別是 :

        @staticmethod : 不需要表示自身對象的self和自身類的cls參數,就跟使用函數一樣 
        @classmethod  : 也不需要self參數,但第一個參數需要是表示自身類的cls參數
    '''
    @staticmethod
    def static_show_counter():
        print("static method invoke!")
        #print(counter) #Unresolved reference 'counter'
        print(ABCD.counter) #success : print :3



def main():
    item = ABCD()
    item.class_show_counter() # class method : counter = 1 , counter =1

    item2 = ABCD()
    item2.class_show_counter()  # class method : counter = 2 , counter =2

    item3 = ABCD()
    item3.class_show_counter()  # class method : counter = 3 , counter =3

    ABCD.static_show_counter()
    ABCD.class_show_counter()

if (__name__=='__main__'):
    main()

Eric 發表在 痞客邦 留言(0) 人氣()

import os
import sys
import copy
from functools import reduce

class Score():
    def __init__(self, score):
        self.__score = score

    def getscore(self):
        print("inside the getscore")
        return self.__score

    def setscore(self,score):
        print("inside the setscore")
        self.__score = score

def main():
    stu = Score(0)
    print(stu.getscore())
    stu.setscore(80)
    print(stu.getscore())

if (__name__=='__main__'):
    main()

 

 

Eric 發表在 痞客邦 留言(0) 人氣()

 

Private & Public   

Eric 發表在 痞客邦 留言(0) 人氣()

import os
import sys
import copy
from functools import reduce


#物件導向的程式設計 !
'''
    Python 是一種物件導向(OOP,object oriented programming)語言,在
    python裡面,所有的資料類型都是' 物件 ',然而,python也允許工程師自己
    創類型,而自創的類型,我們稱為 ( 類別[Class] )
'''
class ClassName(): #Class name 第一個字建議大寫
    '''
    Statement
    '''
    car = 100              #定義屬性
    carName = "Toyota"
    def PrintCarInfo(self):#定義方法
        print(self.car, self.carName)


def main():
    item = ClassName() #使用這個class 的方法
    item.PrintCarInfo() #使用這個class裡面的method的方法




if (__name__=='__main__'):
    main()

 

 

Eric 發表在 痞客邦 留言(2) 人氣()

#最大公約數 ( Greatest Common Divisor[GCD] )
def GCD(n1,n2):
    gcd = 1
    n = 2
    while n<=n1 and n<= n2:
        if n1% n == 0 and n2 %n ==0:
            gcd = n
        n+=1
    return gcd



def main():
    n1,n2 = eval(input("Please enter two value: "))
    print("GCD: " , GCD(n1,n2))


    '''
    Python :eval()
    Des : eval() 是用來執行一個字符串的表達式,並返回表達式的值
    以下是eval()的使用方法:
    
        eval(expression[, globals[, locals]])
    
    '''
    #舉例來說:
    x = 7
    res = eval ('3*x')
    print(res) # 21

    res = eval('pow(2,2)')
    print(res) #4

    res = eval("n+4")
    print(res) #Error: name'n' is not defined


if (__name__=='__main__'):
    main()

Eric 發表在 痞客邦 留言(0) 人氣()

song="""
Whether you're new to programming or an experienced developer, it's easy to learn and use Python.

Eric 發表在 痞客邦 留言(0) 人氣()

 

自從換來新公司之後,就一陣忙碌,似乎好像也沒啥蜜月期,第一天大概了解一下環境和系統,第二天就開始寫code,然後,就一路搞到現在,邊寫邊申請一些權限,直到上禮拜release後,才有點時間來記錄一下這幾星期的心得。

Eric 發表在 痞客邦 留言(0) 人氣()

 

Eric 發表在 痞客邦 留言(0) 人氣()

 

Eric 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼