python第五次筆記---物件導向
一、物件導向是什麼?
一種程式設計思想,是針對大型程式,複雜邏輯開發時使用的程式設計思想。
是一種設計者思維。
抽象:把看著像的東西,統稱為一類。
封裝:將屬性(變數)和方法(函式)定義列表中,可以隱藏部分或全部資料
繼承:讓子類繼承父類的所有公有的屬性和方法。
多型:讓同一個方法在不同類中實現不同功能。
二、物件導向
類(Class): 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。
方法:類中定義的函式。
類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。
資料成員:類變數或者例項變數用於處理類及其例項物件的相關的資料。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
區域性變數:定義在方法中的變數,只作用於當前例項的類。
例項變數:在類的宣告中,屬性是用變數來表示的,這種變數就稱為例項變數,例項變數就是一個用 self 修飾的變數。
繼承:即一個派生類(derived class)繼承基類(base class)的欄位和方法。繼承也允許把一個派生類的物件作為一個基類物件對待。例如,有這樣一個設計:一個Dog型別的物件派生自Animal類,這是模擬"是一個(is-a)"關係(例圖,Dog是一個Animal)。
例項化:建立一個類的例項,類的具體物件。
物件:通過類定義的資料結構例項。物件包括兩個資料成員(類變數和例項變數)和方法。
三.類
1、 類是一種抽象資料型別,是對現實世界的一類資料及其操作的封裝;用於建立物件的模板(屬性(資料)和 方法(函式))
物件:型別(創造物件的類名)value、id , 一切皆為物件
屬性:物件擁有的value
方法:方法是封裝在類中的函式,公開方法可以被類的物件呼叫。
class ClassName:
<statement-1>
.
.
.
<statement-N>
類例項化後,可以使用其屬性,實際上,建立一個類之後,可以通過類名訪問其屬性。
2、類的例項化
import Person
bauer = Person("Bauer")
bauer.hello()
3、類成員的可見性
import uuid
class Person(object):
nationality = "China"
def__init__(self,name):
self.name = name
self.__id = str(uuid.uuid1())
def hello(self):
print("Hello,I am%s,I come from %s,My ID is %s"%(sef.name,self.nationality,sef.__id))
if__name__ == "__main__":
bauer = Person("Bauer")
print(bauer.__dict__)
print(bauer._Person__id)
# 輸出 {'name':'Bauer','_Person__id':'ed496846-94c7-11e9-80c4-5ce0c5e8bcf0'}
# ed496846-94c7-11e9-80c4-5ce0c5e8bcf0
4、私有屬性
私有屬性和例項屬性必須在__init__方法中進行宣告,但私有屬性的屬性名需要以雙下劃線__開頭,比如Person中的__id屬性。私有屬性是一種特殊的例項屬性,只允許在例項物件的內部(成員方法或私有方法中)訪問,而不允許在例項物件的外部通過例項物件或類來直接訪問,也不能被子類繼承。
import uuid
class Person(object):
nationality = "China"
def __init__(self, name):
self.name = name
self.__id = str(uuid.uuid1())
def hello(self):
print("Hello, I am %s, I come from %s, My ID is %s" %(self.name, self.nationality, self.__id))
if __name__ == "__main__":
bauer = Person("Bauer")
bauer.hello()
# print(bauer.__id) # AttributeError: 'Person' object has no attribute '__id'
# print(Person.__id) # AttributeError: type object 'Person' has no attribute '__id'
# 輸出 Hello, I am Bauer, I come from China, My ID is c0c02dcc-94aa-11e9-972c-5ce0c5e8bcf0
私有屬性不能通過類直接訪問,也不能通過例項物件直接訪問,但私有屬性可以通過成員方法進行訪問。
私有屬性可以通過成員方法或是例項物件._類名__私有變數名的方式來訪問。
import uuid
class Person(object):
nationality = "China"
def __init__(self, name):
self.name = name
self.__id = str(uuid.uuid1())
def hello(self):
print("Hello, I am %s, I come from %s, My ID is %s" %(self.name, self.nationality, self.__id))
def get_id(self):
return self.__id
if __name__ == "__main__":
bauer = Person("Bauer")
bauer.hello()
print(bauer._Person__id)
print(bauer.get_id())
"""
輸出 Hello, I am Bauer, I come from China, My ID is c0c02dcc-94aa-11e9-972c-5ce0c5e8bcf0
354547ae-94ab-11e9-a52c-5ce0c5e8bcf0
354547ae-94ab-11e9-a52c-5ce0c5e8bcf0
"""
5、繼承
Python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。
class DerivedClassName(BaseClassName1):
<statement-1>
.
.
.
<statement-N>
BaseClassName(示例中的基類名)必須與派生類定義在一個作用域內。除了類,還可以用表示式,基類定義在另一個模組中時這一點非常有用:
class DerivedClassName(modname.BaseClassName):
6、類屬性與方法
類的私有屬性
__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。
類的方法
在類的內部,使用 def 關鍵字來定義一個方法,與一般函式定義不同,類方法必須包含引數 self,且為第一個引數,self 代表的是類的例項。
self 的名字並不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。
類的私有方法
__private_method:兩個下劃線開頭,宣告該方法為私有方法,只能在類的內部呼叫 ,不能在類的外部呼叫。self.__private_methods。
相關文章
- Python 物件導向筆記Python物件筆記
- 【python 物件導向】 python物件學習筆記《1》Python物件筆記
- Python學習筆記|Python之物件導向Python筆記物件
- 物件導向筆記物件筆記
- Python 3 學習筆記之——物件導向Python筆記物件
- Go 筆記之物件導向Go筆記物件
- (Java筆記)物件導向基礎Java筆記物件
- 【廖雪峰python進階筆記】物件導向程式設計Python筆記物件程式設計
- Python 學習筆記之類「物件導向,超類,抽象」Python筆記物件抽象
- Python——物件導向Python物件
- Python物件導向Python物件
- python 物件導向Python物件
- [筆記]物件導向的程式設計筆記物件程式設計
- Java課堂筆記(二):物件導向Java筆記物件
- 《JavaScript 物件導向精要》 讀書筆記JavaScript物件筆記
- Python3:物件導向程式設計學習筆記(2)Python物件程式設計筆記
- python-程式導向、物件導向、類Python物件
- Cris 的 Scala 筆記整理(七):物件導向筆記物件
- Flutter學習筆記(8)--Dart物件導向Flutter筆記Dart物件
- js高階 物件導向 學習筆記JS物件筆記
- python物件導向(一)Python物件
- python物件導向(下)Python物件
- python物件導向一Python物件
- Python物件導向(上)Python物件
- python物件導向思想(類與物件)Python物件
- python物件導向[基礎]Python物件
- Python 物件導向介紹Python物件
- Python物件導向知多少?Python物件
- python 初識物件導向Python物件
- 物件導向-物件導向思想物件
- 【Python】5.物件導向的PythonPython物件
- Cris 的 Scala 筆記整理(九):物件導向高階筆記物件
- Java小白進階筆記(5)-進階物件導向Java筆記物件
- JavaSE第三章筆記(物件導向1)Java筆記物件
- Python物件導向程式設計Python物件程式設計
- 草根學Python(九) 物件導向Python物件
- Python物件導向三大特性Python物件
- 2.1.0 Python初識物件導向Python物件