python(類的封裝調用/繼承/多態)

1、類的定義
類:用來描述具備相同的屬性和方法的對象的集合。它定義了該集合中每一個對象所共有的屬性和方法。對象是類的實例
 
對象:類實例化出來的叫作對象
 
對象和類的關係:類和對象的關係就像模具和鑄件的關係,類的實例化的結果就是對象,而對對象的抽象就是類。
 
類和實例
面向對象最重要的概念就是類(Class)和實例(Instance),必須牢記類是抽象的模板,好比 Student類,而實例是根據類建立出來的一個個具體的「對象」,每一個對象都擁有相同的方法,但各自的數據可能不一樣。
 
仍以 Student 類爲例,在 Python 中,定義類是經過 class 關鍵字:
class Student(object):
    pass

class 後面緊接着是類名,即 Student,類名一般是大寫開頭的單詞,緊接着是(object),表示該類是從哪一個類繼承下來的,繼承的概念咱們後面再講,一般,若是沒有合適的繼承類,就使用 object類,這是全部類最終都會繼承的類。python

1.類定義:
  • class定義類
  • class 後面加 類名稱 加 () 加 :

2.類名稱定義規範:ide

  • 不要以純數字命名
  • 不要以python中保留字符(關鍵字)來命名
  • 不要以文件名命名
  • 不能出現特殊字符
  • 要簡短且見名知義
  • 當類名稱中有多個單詞時,應採用駝峯式(每一個單詞首字母大寫) --> XinFangShuo()

 定義好了 Student 類,就能夠根據 Student 類建立出 Student 的實例,建立實例是經過類名+()實現的:函數

bart = Student()

能夠看到,變量 bart 指向的就是一個 Student 的實例,而 Student 自己則是一個類。spa

因爲類能夠起到模板的做用,所以,能夠在建立實例的時候,把一些咱們認爲必須綁定的屬性強制填寫進去。經過定義一個特殊的__init__方法,在建立實例的時候,就把 name,score 等屬性綁上去:
class Student(object):
    def __init__(self, name, score):
        self.name = name 
        self.score = score        

注意:特殊方法「__init__」先後分別有兩個下劃線!!!code

注意到__init__方法的第一個參數永遠是 self,表示建立的實例自己,所以,在__init__方法內部,就能夠把各類屬性綁定到 self,由於 self 就指向建立的實例自己。
 
有了__init__方法,在建立實例的時候,就不能傳入空的參數了,必須傳入與__init__方法匹配的參數,但 self 不須要傳,Python 解釋器本身會把實例變量傳進去:
 
 bart = Student('Bart Simpson', 59)

和普通的函數相比,在類中定義的函數只有一點不一樣,就是第一個參數永遠是實例變量 self,而且調用時,不用傳遞該參數。除此以外,類的方法和普通函數沒有什麼區別,因此,你仍然能夠用默認對象

參數、可變參數、關鍵字參數和命名關鍵字參數。
 
class Four():           #類的定義
    def sub(self,x,y):
        return x + y

"""
class Dog():
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def sit(self):
        print (self.name.title() + ' ' + "is now sitting")

    def roll_over(self):
        print (self.name.title() + ' ' + "is now roll over")

my_dog = Dog('willie',6)    #參數實例化
# your_dog = Dog('lucy',3)
my_dog.sit()
my_dog.roll_over()
"""

"""
class Four_operations():
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)
    def add(self):
        return self.a + self.b

    def reduce(self):
        return self.a - self.b

    def ride(self):
        return self.a * self.b

    def Except(self):
        return self.a / self.b

operation = Four_operations('12','4')
print operation.add()
print operation.reduce()
print operation.ride()
print operation.Except()
"""

 

 2、類的調用
 調用類下的方法,必需經過類的的實例/類名()進行調用
  •  當類中初始化方法__init__中存在參數時,則在實例化時,須要往實例括號中傳入參數
  •  當類中無初始化方法或者__init__中不存在參數時,則在實例化時,不須要往實例括號中傳入參數,而在調用方法時再進行傳參
class Four(): 
    def sub(self,x,y):
        return x + y

print Four().sub(2,3)


class Four_operations():
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)
    def add(self):
        return self.a + self.b

    def reduce(self):
        return self.a - self.b

    def ride(self):
        return self.a * self.b

    def Except(self):
        return self.a / self.b

operation = Four_operations('12','4')        #實例化
print operation.add()
print operation.reduce()
print operation.ride()
print operation.Except()

 

 3、繼承
1.單繼承和多繼承
  • 一個對象使用另外一個對象的屬性和方法,被繼承的類也稱父類
  • 多重繼承就是一個子類繼承多個父類
class Four():
    def sub(self,x,y):
        return x + y

class Five(Four):       #Five類繼承了Four類 --> Five 類擁有了 Four 類下的全部函數方法
    def jian(self,a,b):
        return a - b

print Five().sub(2,5)
class Father():
    def __init__(self,name,sport,sex):
        self.name = name
        self.sport = sport
        self.sex = sex
    def Surname(self):
        print self.name + "姓張"
    def hobby(self):
        print self.name + "like" + " " + self.sport

class Son(Father):
    def study(self):
        print self.name + " " + "study very good"
    def Sex(self):
        print self.name + " " + "is" + " " + self.sex
so = Son('張四',"play basketball","boy")
so.Surname()
so.hobby()
so.study()
so.Sex()
class car():
    "多繼承"
    def __init__(self,brand,type,year,mileage):
        self.brand = brand
        self.type = type
        self.year = year
        self.mileage = mileage
    def make(self):
        print self.brand + self.type + "" + str(self.year) + "生產的!"

    def update_mileage(self,mile):
        if mile < self.mileage:
            print "請勿修改里程數!"

class aircraft():
    def __init__(self,name,destination):
        self.name = name
        self.destination = destination
    def bound(self):
        print self.name + "開往" + self.destination

class boat(car,aircraft):
    def __init__(self,brand,type,year,mileage,name,destination):
        self.brand = brand
        self.type = type
        self.year = year
        self.mileage = mileage
        self.name = name
        self.destination = destination
my_boat = boat("泰坦","尼克號",2010,500,"泰坦尼克號","寧波")
my_boat.make()
my_boat.bound()

 

 4、多態(重寫父類方法)
class Four():
    def sub(self,x,y):
        return x + y

class Five(Four):       #Five類繼承了Four類 --> Five 類擁有了 Four 類下的全部函數方法
    def jian(self,a,b):
        return a - b

    def sub(self,x,y):
        return x * y

print Five().sub(3,6)
相關文章
相關標籤/搜索