1. 程式人生 > >Python面向物件程式設計——類、物件、屬性、方法示例程式碼

Python面向物件程式設計——類、物件、屬性、方法示例程式碼

習題九

一、 閱讀以下關於平面座標處理的程式碼:

class Coordinate(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def getX(self):
        return self.x

    def getY(self):
        return self.y

    def __str__(self):
        return '<' + str(self.getX()) + ',' + str(self.getY()) + '>'

要求:

1、 增加一個eq方法(def eq(self, other):),若座標被認為是平面上的同一個點則返回真(即有同樣的x,y座標)。

2、 定義一個特殊方法repr(def repr(self):),能夠輸出形式如“Coordinate(1, 8)”的座標。

3、 完成如下操作:
(1) 建立一個座標為(1,8)的物件
(2) 分別用str方法和repr方法顯示該物件
(3) 再建立一個座標為(1,8)的物件
(4) 判斷這兩個物件是否相等?

沒有什麼可說的 大家直接看原始碼吧

原始碼:

class Coordinate(object):

    def
__init__(self, x, y):
//物件的初始化 self.x = x self.y = y def getX(self): return self.x def getY(self): return self.y def __str__(self): return '<' + str(self.getX()) + ',' + str(self.getY()) + '>' def __eq__(self, other): if(self.x==other.x and
self.y==other.y): return True else: return False def __repr__(self): return 'Coordinate('+str(self.x)+','+str(self.y)+')' first=Coordinate(1,8) print(first) print(str(first)) print(repr(first)) second=Coordinate(1,8) print(first.__eq__(second))

執行結果:

這裡寫圖片描述

二、 給例9-5增加設定函式和獲取函式。

設定函式:setAge(self, age),只有當age大於0且小於等於150時,才能給self.age賦值。

獲取函式:getAge(self),返回self.age。

例9-5是一個關於物件的顯示的例項,對比了strrepr兩種物件輸出方式,程式碼如下:

class Person(object):
    def __init__(self):
        self.name=''
        self.age=0
    def display(self):
        print('Person(%s, %d)'%(self.name,self.age))
    def __str__(self):
        return 'Person(%s, %d)'%(self.name,self.age)
    def __repr__(self):
        return 'Person<%s, %d>'%(self.name,self.age)

我們要做的就是給例題增加兩個函式,原始碼如下:

class Person(object):

    def __init__(self):
        self.name=''
        self.age=0

    def display(self):
        print('Person(%s, %d)'%(self.name,self.age))

    def __str__(self):
        return 'Person(%s, %d)'%(self.name,self.age)

    def __repr__(self):
        return 'Person<%s, %d>'%(self.name,self.age)

    #設定函式:setAge(self, age),只有當age大於0且小於等於150時,才能給self.age賦值。
    def setAge(self,age):
        if(age>0 and age<150):
            self.age=age

    #獲取函式:getAge(self),返回self.age。        
    def getAge(self):
        return self.age


p=Person()
print(p)

p.setAge(10)
print(p.getAge())

p.setAge(-1)
print(p.getAge())

p.setAge(20)
print(p.getAge())

執行結果:

這裡寫圖片描述

三、 給例9-18定義如下方法:

1、 定義一個方法intersect(self, other),返回一個新的intSet,包含同時出現在兩個集合中的元素。換句話說,
s1.intersect(s2),將返回同時包含在s1和s2中元素的新intSet。若s1和s2沒有共同的元素該如何處理?

2、 增加一個特殊方法len(self),若呼叫len(s),將返回s中元素的個數。

備註:例9-18建立了一個表示整數集合的新類
-初始為空
-每個特定的整數只能在集合中出現一次(在方法中強制實現)
-用一個列表儲存集合中的元素
-具體方法見程式碼

原始碼:

class intSet(object):
    def __init__(self):
        self.vals=[]

    #insert(e):若整數e不存在,則插入e到集合中
    def insert(self,e):
        if not e in self.vals:
            self.vals.append(e)

    #menber(e):若整數e在集合中返回True,否則返回False
    def member(self,e):
        return e in self.vals

    #remove(e):從集合中刪除整數e,若不存在則出錯
    def remove(self,e):
        try:
            self.vals.remove(e)
        except:
            raise ValueError(str(e)+' not found')

    #返回同時包含在兩個集合中的整數
    def intersect(self,other):
        intSet=[]
        flag=False
        for e in self.vals:
            if(e in other.vals):
                flag=True
                intSet.append(e)
        if(flag==False):
            return 'There are no same number in the two set, intSet is empty'
        else:
            return '{'+','.join([str(e) for e in intSet])+'}'

    #返回s中元素個數
    def __len__(self):
        return len(self.vals)


    def __str__(self):
        self.vals.sort()
        return '{'+','.join([str(e) for e in self.vals])+'}'

s=intSet()
print(s)

s.insert(3)
print('add 3: ',end=' ')
print(s)

s.insert(4)
s.remove(3)
print('add 4, delete 3: ',end=' ')
print(s)

s.insert(3)
s.insert(5)
s.insert(6)
s.insert(7)
print('the set s: ',end=' ')
print(s)

o=intSet()
o.insert(2)
o.insert(3)
o.insert(4)
print('the set o: ',end=' ')
print(o)

print('the item both in s and o: ',end=' ')
print(s.intersect(o))

print('the length of the set is: '+str(len(s)))

執行結果:

這裡寫圖片描述

這裡寫圖片描述

相關推薦

JavaSE之面向物件程式設計物件下——2

                        &n

JavaSE之面向物件程式設計物件下——3

                        &n

JavaSE之面向物件程式設計物件下—— 1

一、程式碼塊 在Java語言中我們總是感受到當遇到一個難的東西,就用一個大括號把它括起來,這樣被大括號括起來的程式碼塊就叫程式碼塊。程式碼塊一共有四種:普通程式碼塊、構造塊、靜態塊、同步程式碼塊。下面我們先介紹前三種程式碼塊。 1.普通程式碼塊 定義:普通程式碼塊就是在定義在方法中的程式碼塊

JavaSE之面向物件程式設計物件(上)

1.面向物件程式設計簡介: [點一下就可以看到這個內容喲] (https://blog.csdn.net/ZhuiZhuDream5/article/details/83831961) 2.類與物件的定義與使用: [帶你進一步走進java] (https://blog.csdn.net/Zh

JavaSE之面向物件程式設計物件(上)—— 5

首先我們來認識一下static關鍵字表示什麼:static關鍵字表示靜態的意思,更加通俗的解釋就是static修飾屬性或者方法它表示類的屬性或者方法,而前面所學的都表示物件的熟悉感或者方法。下面我們將從兩個方面來介紹static關鍵字。 一、static屬性 static屬性也叫類屬性,對於

JavaSE之面向物件程式設計物件(上)—— 4

一、首先介紹一下this關鍵字的用法: 總的來說this共有三類用法: 1.this呼叫本類屬性 2.this呼叫本類方法 3.this表示當前物件 下面通過栗子來具體的解釋每種用法: 1.this呼叫本類屬性 注意:一個檔案只能有一個公有的類,並且檔名應該和公有的類名一致;如果定義一個類沒

JavaSE之面向物件程式設計物件(上)—— 3

一、private實現封裝處理和構造方法(匿名物件) 1.private實現封裝處理 封裝是java的一大特性,private只是為實現封裝處理做了一個鋪墊。我們之所以存在封裝是因為封裝可以是我們的程式更加的有序,更加的安全private它表示私有化,它可以幫助我們實現面向物件的這一特性。

JavaSE之面向物件程式設計物件(下)

1.程式碼塊 [分類詳細呢] (https://blog.csdn.net/ZhuiZhuDream5/article/details/83963433) 2.內部類的定義與使用 [面試常考點,非常的重要] (https://blog.csdn.net/ZhuiZhuDream5/artic

JavaSE之面向物件程式設計物件(下)—— 6

                        &n

JavaSE之面向物件程式設計物件(下)—— 4 and 5

                        &n

程式講解——JavaSE之面向物件程式設計物件

//javaSE面向物件程式設計——類於物件(下) //4.覆寫 //(1)方法的覆寫:首先方法的覆寫必須有繼承的關係,在子類中進行覆寫.在覆寫的時候還要求子類中進行覆寫的方法要比父 //類中的方法許可權更不為嚴格:public>protected>default>priv

面向物件程式設計,物件

'''面向過程的程式設計思想 核心過程二字,過程指的是解決問題的步驟,即先幹什麼\再幹什麼\後幹什麼 基於該思想編寫程式就好比在設計一條流水線,是一種機械式的思維方式 優點:複雜的問題流程化\進而簡單化 缺點:可擴充套件性差面向物件的程式設計思想 核心是物件二字,物件是特徵與技能

JAVASE之面向物件程式設計--物件1

1.面向物件程式設計正規化(c++,java.Go)--能進行現實生活的抽象--狗吃糧   每個物件--類   屬性以及方法   OOA: 面向物件分析   OOP:面向物件程式設計   OOD:面向物件設計   面向物件三大特徵:*****   a.封裝性

MATLAB面向物件程式設計物件的建立

      在此之前對面向物件程式設計瞭解不多,更不用說MATLAB面向物件程式設計。不過,在第一份工作的經歷中還是遇到過一點使用,只是那時候我還不是很清楚。那一次使用是為了實現Simulink中模型的使用。       今天簡單做一個類的構建以及物件的建立。首先實現一個類

【java】面向物件程式設計——物件的繼承和多型

一、程式碼塊 程式碼塊定義:使用 {} 定義的一段程式碼。 根據程式碼塊定義的位置以及關鍵字,又可分為以下四種: 普通程式碼塊(定義在方法中,除錯) 構造塊(定義在類中的(不加修飾符)) 靜態塊 同步程式碼塊 構造塊 構造塊在每次產生一個新的物件就呼叫一次構

【java】面向物件程式設計——物件的封裝

Java比C更方便的地方在於Java是面向物件的。面向物件的特徵: 1、封裝 ; 2、繼承 ; 3、多型; 以下對面向物件的封裝特徵進行簡述: 一、類與物件的定義與使用 類是指共性的概念,物件是一個具體的、可以使用的事物。 首先產生類,而後才可以產生物件。 類的組成: 1.

java -面向物件程式設計-物件

上一章講了面向物件程式設計的理念以及為什麼要學習面向物件程式設計。但是我們也說了。面向物件程式設計是一個理念,要掌握它不是一日之功,而是要不斷地學習,實踐再學習。而今天說講的內容,就是你學習面向物件程式設計的第一步:類與物件。這是面向物件程式設計中最基礎的一個部

Java面向物件程式設計-物件概念

1.面向物件三大特徵:     a.封裝性:將客觀事物封裝成抽象的類,每個類都有自己的屬性與方法,並且類可以讓自己的資料與方法只讓可信的類或物件操作,對不可信的進行資訊影藏。         內部操作對外部而言不可信(保護性)     b.繼承性:可以使用現有類的所有功

C++面向物件程式設計——物件(個人整理)

物件: object 客觀世界中任何一個事物都可以看成一個物件,如自然物體(汽車,房子,班級...) 可以看到一個班級作為一個物件有兩個要素: 1、班級所屬系和專業,人數等靜態特徵(屬性); 2、班

Java基礎筆記整理---【07】面向物件程式設計-物件

int 型別預設值為 0 String型別預設值為null 方法(函式):返回值 方法名(引數型別 引數名稱, ...){方法體(程式碼塊)}this指呼叫的方法中(當前)的變數類與物件1.構造方法:1> 構造物件 構造例項的方法,一個特殊方法,方法名需要與類名相同,