類和正則表達(自動更正、代數運算)

一、面對對象編程:是一種程序設計範型,同時也是一種程序開發的方法,實現OOP的程序但願可以在程序中包含各類獨立而又相互調用的對象,每個對象又都應該可以接受數據、數據處理並將數據傳達給其餘對象,所以每個對象均可以被當作一個小型的機器,而整個程序塊系統就是由這些小的機器相互協助、組合構建起來的。java

二、面向對象分析:即根據抽象關鍵的問題域來分解系統。python

三、面向對象設計:是一種提供符號設計系統的面向對象的實現過程,它用很是接近時機領域屬於的方法把系統構形成現實世界的對象。c++

類(class)告訴python建立新類型的東西算法

對象(object):兩個意思,即最基本的東西,或者某樣東西的實例編程

對象(object):是數據和操做數據方法的結合。對象之間的通訊:對象之間進行通訊的結構叫作消息,當一個消息發送給某個對象時,應該包含如下幾種信息:數據結構

1)接收消息的對象名(目的對象名);2)接受消息去執行某種操做的信息(調用方法名);3)發送給該對象參數,參數可使改對象有的變量名,或者是誰有對象都知道搜的全局變量名;4)發送給該對象的消息名(源消息名)app

類(class):對象的抽象是類,類的具體個性化就是對象。函數

類的結構關係:1)通常/具體結構稱爲分類結構,也能夠說是is-a關係。用來描述在繼承中子類與父類的關係,即一個派生類的實例化對象是其父類的一個例子,因此是is-a關係;2)總體與部分結構稱爲組裝結構,他們之間的關係是has a關係。組合是實現繼承的方式之一,在組合繼承中,一個子類能夠有多個父類,即一個子類has  a 一個父類。設計

面向對象的三要素:對象

一、封裝:概念:描述了對數據信息進行隱藏的觀念,它對數據屬性提供接口(接口函數)和訪問方法。在類的設計時,微數據提供此相應的接口,一面向客戶程序經過不規範的操做來存取封裝的屬性。

咱們通常用語法「def」定義封裝內部的函數,以前認知是「程序 = 數據結構 + 算法」,加上簡單的封裝後,能夠理解爲「程序 = 對象 + 消息」。

二、繼承:概念:繼承令不一樣類之間擁有了必定的結構與關係。

類之間的關係:1)經過繼承建立的新類稱爲「子類」或「派生類」;2)被繼承的類稱爲「基類」、「父類」或「超類」。

特有名詞概念:1)泛化:表示全部子類與其父類及祖先類有着同樣的特色;

                         2)特化:描述全部的子類的自定義,也就是說,什麼屬性讓它與其父類一同;

                         3)實現繼承的方式:能夠經過繼承和組合來實現,其中繼承又有實現繼承和可視繼承,組合又有接口繼承和純虛類;

                         4)實現繼承:子類的屬性和方法徹底繼承與父類;

                         5)可視繼承:子類繼承父類的外觀方法;

                         6)接口繼承:子類的屬性名和方法名繼承於父類,可是具體的屬性值和方法實現由子類重寫;

                         7)多重繼承:即組合繼承,在java和c++中使用接口概念來實現多重繼承的效果,而python中定義類的時候,能夠直接繼承多個父類來實現多重繼承。在實現多重繼承時,若是繼承的多個父類中均有名稱相同的方法時,須要注意繼承的順序。

三、多態:概念:指出了不一樣對象如何經過他們共同的屬性動做來操做以及訪問,而不須要考慮他們的具體的類,多態代表了動態綁定(運行時)的存在,容許重載及運行時類型肯定的驗證。

多態的做用:實現接口的重用,保證了在類發生繼承或派生時,咱們仍然能正確調用這些相關類的實例化對象的屬性和方法。

 

1、設計一個三維向量類,並實現向量的加法、減法以及向量與標量的乘法和除法:

class vector3:
    def __init__(self, x_ = 0, y_ = 0, z_ = 0):
        self.x = x_
        self.y = y_
        self.z = z_
    def __add__(self, obj):
        return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z)
    def __sub__(self, obj):
        return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z)
    def __mul__(self, obj):
        return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z)
    def __pow__(self, obj):
        return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y)
    def __str__(self):
        return str(self.x)+','+str(self.y)+','+str(self.z)
v1 = vector3(1, 2, 3)
v2 = vector3(0, 1, 2)
print (v1 + v2)
print (v1 - v2)
print (v1 * v2)
print (v1 ** v2)

 

 

2、編寫一個程序(類),用戶輸入一段英文,而後輸出這段英文中全部長度爲3個字母的單詞,而且若是單詞有連續重複了2次,只輸出一個:

import re
a=[]
words=input("Input the words:")
l=re.split('[\. ]+',words)
i=0   
for i in l:
    if len(i)==3: 
        if i not in a:
            a.append(i)
    else:
        continue
for k in range(0,len(a)):
    print(a[k],end=' ')

相關文章
相關標籤/搜索