欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你理解Python中面向?qū)ο缶幊蘋OP的概念

 更新時間:2023年08月28日 10:21:27   作者:python收藏家  
在Python中,面向?qū)ο缶幊蹋∣OP)是一種在編程中使用對象和類的編程范式,它旨在實(shí)現(xiàn)現(xiàn)實(shí)世界的實(shí)體,下面我們就一起來看看它的相關(guān)知識吧

在Python中,面向?qū)ο缶幊蹋∣OP)是一種在編程中使用對象和類的編程范式。它旨在實(shí)現(xiàn)現(xiàn)實(shí)世界的實(shí)體,如繼承,多態(tài)性,封裝等。在編程中,OOP的主要概念是將數(shù)據(jù)和處理數(shù)據(jù)的函數(shù)綁定在一起作為一個單元,這樣代碼的其他部分就不能訪問這些數(shù)據(jù)。

Python中的OOP概念:

  • 對象
  • 繼承
  • 多態(tài)
  • 封裝
  • 數(shù)據(jù)抽象

1. 類

類是對象的集合。類包含創(chuàng)建對象所依據(jù)的藍(lán)圖或原型。它是一個包含一些屬性和方法的邏輯實(shí)體。

為了理解創(chuàng)建類的必要性,讓我們考慮一個示例,假設(shè)您希望跟蹤可能具有不同屬性(如品種和年齡)的狗的數(shù)量。如果使用列表,則第一個元素可以是狗的品種,而第二個元素可以表示其年齡。假設(shè)有100只不同的狗,那么你怎么知道哪個元素應(yīng)該是哪個?如果你想給這些狗添加其他屬性呢?這缺乏組織性,這正是類的需要。

關(guān)于Python類的一些要點(diǎn):

  • 類由關(guān)鍵字class創(chuàng)建。
  • 屬性是屬于類的變量。
  • 屬性始終是公共的,可以使用點(diǎn)(.)操作。例如:Myclass.Myattribute

類定義語法:

class ClassName:
   # Statement-1
   .
   .
   .
   # Statement-N

在Python中創(chuàng)建空類

class Dog:
    pass

在上面的例子中,我們使用class關(guān)鍵字創(chuàng)建了一個名為Dog的類。

2. 對象

對象是具有與之相關(guān)聯(lián)的狀態(tài)和行為的實(shí)體。它可以是任何現(xiàn)實(shí)世界對象,如鼠標(biāo)、鍵盤、椅子、桌子、筆等。整數(shù)、字符串、浮點(diǎn)數(shù)、偶數(shù)數(shù)組和字典都是對象。更具體地,任何單個整數(shù)或任何單個字符串都是對象。數(shù)字12是一個對象,字符串“Hello,world”是一個對象,列表是一個可以容納其他對象的對象,依此類推。

對象由以下部分組成:

  • 狀態(tài):由對象的屬性表示。它還反映了對象的屬性。
  • 行為:它由對象的方法表示。它還反映了一個對象對其他對象的響應(yīng)。
  • 身份:它為對象提供唯一的名稱,并使一個對象能夠與其他對象交互。

為了理解狀態(tài)、行為和身份,讓我們以類dog為例(如上所述)。

身份可以被認(rèn)為是狗的名字。

狀態(tài)或?qū)傩钥梢员徽J(rèn)為是狗的品種、年齡或顏色。

行為可以被認(rèn)為是狗在吃東西還是睡覺。

創(chuàng)建對象

這將創(chuàng)建一個名為obj的對象,它屬于上面定義的Dog類。在深入研究對象和類之前,讓我們了解一些基本的關(guān)鍵字,這些關(guān)鍵字將在處理對象和類時使用。

obj = Dog()

Python 中的self理解

1.類方法在方法定義中必須有一個額外的第一個參數(shù)。我們在調(diào)用方法時不給予這個參數(shù)一個值,Python提供了它

2.如果我們有一個不帶參數(shù)的方法,那么我們?nèi)匀槐仨氂幸粋€參數(shù)。

3.這類似于C++中的this指針和Java中的this引用。

當(dāng)我們調(diào)用這個對象的方法myobject.method(arg 1,arg 2)時,Python會自動將其轉(zhuǎn)換為MyClass.method(myobject,arg 1,arg 2)–這就是特殊的self的全部內(nèi)容。

Python __init__方法

__init__方法類似于C++和Java中的構(gòu)造函數(shù)。一個類的對象被實(shí)例化,它就運(yùn)行。該方法可用于對對象進(jìn)行任何初始化?,F(xiàn)在讓我們定義一個類,并使用self和__init__方法創(chuàng)建一些對象。

創(chuàng)建具有類和實(shí)例屬性的類和對象

class Dog:
    # class attribute
    attr1 = "mammal"
    # Instance attribute
    def __init__(self, name):
        self.name = name
# Driver code
# Object instantiation
Rodger = Dog("Rodger")
Tommy = Dog("Tommy")
# Accessing class attributes
print("Rodger is a {}".format(Rodger.__class__.attr1))
print("Tommy is also a {}".format(Tommy.__class__.attr1))
# Accessing instance attributes
print("My name is {}".format(Rodger.name))
print("My name is {}".format(Tommy.name))

輸出

Rodger is a mammal
Tommy is also a mammal
My name is Rodger
My name is Tommy

使用方法創(chuàng)建類和對象

這里,Dog類定義了兩個屬性:

attr1是設(shè)置為值“mammal”的類屬性。類屬性由類的所有實(shí)例共享。

__init__是一個特殊的方法(構(gòu)造函數(shù)),用于初始化Dog類的實(shí)例。它需要兩個參數(shù):self(引用正在創(chuàng)建的實(shí)例)和name(表示狗的名字)。name參數(shù)用于為Dog的每個實(shí)例分配一個name屬性。

class Dog:
    # class attribute
    attr1 = "mammal"
    # Instance attribute
    def __init__(self, name):
        self.name = name
    def speak(self):
        print("My name is {}".format(self.name))
# Driver code
# Object instantiation
Rodger = Dog("Rodger")
Tommy = Dog("Tommy")
# Accessing class methods
Rodger.speak()
Tommy.speak()

輸出:

My name is Rodger
My name is Tommy

3. 繼承

繼承是一個類從另一個類派生或繼承屬性的能力。派生屬性的類稱為派生類或子類,從中派生屬性的類稱為基類或父類。繼承的好處是:

  • 它很好地代表了現(xiàn)實(shí)世界的關(guān)系。
  • 它提供了代碼的可重用性。我們不必一遍又一遍地寫同樣的代碼。此外,它允許我們在不修改類的情況下向類添加更多功能。
  • 它本質(zhì)上是可傳遞的,這意味著如果類B從另一個類A繼承,那么B的所有子類都將自動從類A繼承。

繼承的類型

  • 單一繼承:單級繼承使派生類能夠從單親類繼承特性。
  • 多級繼承:多級繼承使派生類能夠從直接父類繼承屬性,而直接父類又從父類繼承屬性。
  • 分層繼承:分層繼承使多個派生類能夠從父類繼承屬性。
  • 多重繼承:多級繼承使一個派生類能夠從多個基類繼承屬性。
# parent class
class Person(object):
	# __init__ is known as the constructor
	def __init__(self, name, idnumber):
		self.name = name
		self.idnumber = idnumber
	def display(self):
		print(self.name)
		print(self.idnumber)
	def details(self):
		print("My name is {}".format(self.name))
		print("IdNumber: {}".format(self.idnumber))
# child class
class Employee(Person):
	def __init__(self, name, idnumber, salary, post):
		self.salary = salary
		self.post = post
		# invoking the __init__ of the parent class
		Person.__init__(self, name, idnumber)
	def details(self):
		print("My name is {}".format(self.name))
		print("IdNumber: {}".format(self.idnumber))
		print("Post: {}".format(self.post))
# creation of an object variable or an instance
a = Employee('Rahul', 886012, 200000, "Intern")
# calling a function of the class Person using
# its instance
a.display()
a.details()

輸出:

Rahul
886012
My name is Rahul
IdNumber: 886012
Post: Intern

在上面,我們創(chuàng)建了兩個類,即Person(父類)和Employee(子類)。Employee類繼承自Person類。我們可以通過employee類使用person類的方法,如上面代碼中的display函數(shù)所示。子類也可以修改父類的行為,如通過details()方法所看到的。

4. 多態(tài)

多態(tài)僅僅意味著具有多種形式。例如,我們需要確定給定種類的鳥是否會飛,使用多態(tài)性,我們可以使用單個函數(shù)來完成這一點(diǎn)。

class Bird:
	def intro(self):
		print("There are many types of birds.")
	def flight(self):
		print("Most of the birds can fly but some cannot.")
class sparrow(Bird):
	def flight(self):
		print("Sparrows can fly.")
class ostrich(Bird):
	def flight(self):
		print("Ostriches cannot fly.")
obj_bird = Bird()
obj_spr = sparrow()
obj_ost = ostrich()
obj_bird.intro()
obj_bird.flight()
obj_spr.intro()
obj_spr.flight()
obj_ost.intro()
obj_ost.flight()

輸出

There are many types of birds.
Most of the birds can fly but some cannot.
There are many types of birds.
Sparrows can fly.
There are many types of birds.
Ostriches cannot fly.

這段代碼演示了Python類中繼承和方法重寫的概念。它展示了子類如何重寫父類中定義的方法以提供特定的行為,同時仍然從父類繼承其他方法。

5. 封裝

封裝是面向?qū)ο缶幊蹋∣OP)中的基本概念之一。它描述了包裝數(shù)據(jù)的思想以及在一個單元內(nèi)處理數(shù)據(jù)的方法。這就限制了直接訪問變量和方法,并可以防止意外修改數(shù)據(jù)。為了防止意外更改,對象的變量只能由對象的方法更改。這些類型的變量被稱為私有變量。

類是封裝的一個例子,因?yàn)樗庋b了所有的數(shù)據(jù),如成員函數(shù),變量等。

# Creating a Base class
class Base:
	def __init__(self):
		self.a = "GeeksforGeeks"
		self.__c = "GeeksforGeeks"
# Creating a derived class
class Derived(Base):
	def __init__(self):
		# Calling constructor of
		# Base class
		Base.__init__(self)
		print("Calling private member of base class: ")
		print(self.__c)
# Driver code
obj1 = Base()
print(obj1.a)
# Uncommenting print(obj1.c) will
# raise an AttributeError
# Uncommenting obj2 = Derived() will
# also raise an AtrributeError as
# private member of base class
# is called inside derived class

輸出

GeeksforGeeks

在上面的例子中,我們創(chuàng)建了c變量作為私有屬性。我們甚至不能直接訪問這個屬性,甚至不能改變它的值。

6. 數(shù)據(jù)抽象

它向用戶隱藏了不必要的代碼細(xì)節(jié)。此外,當(dāng)我們不想給予代碼實(shí)現(xiàn)的敏感部分時,這就是數(shù)據(jù)抽象的由來。

Python中的數(shù)據(jù)抽象可以通過創(chuàng)建抽象類來實(shí)現(xiàn)。

到此這篇關(guān)于一文帶你理解Python中面向?qū)ο缶幊蘋OP的概念的文章就介紹到這了,更多相關(guān)Python面向?qū)ο缶幊虄?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用Tkinter實(shí)現(xiàn)滾動抽獎器效果

    Python使用Tkinter實(shí)現(xiàn)滾動抽獎器效果

    Tkinter 是 Python 的標(biāo)準(zhǔn) GUI(Graphical User Interface,圖形用戶接口)庫,Python 使用 Tkinter 可以快速地創(chuàng)建 GUI 應(yīng)用程序。這篇文章主要介紹了Python使用Tkinter實(shí)現(xiàn)滾動抽獎器,需要的朋友可以參考下
    2020-01-01
  • Python還能這么玩之用Python修改了班花的開機(jī)密碼

    Python還能這么玩之用Python修改了班花的開機(jī)密碼

    今天帶大家學(xué)習(xí)如何用Python修改開機(jī)密碼,文中有非常詳細(xì)的代碼示例,喜歡惡作劇的小伙伴可以看一下,不過不要亂用哦,需要的朋友可以參考下
    2021-06-06
  • Python獲取某一進(jìn)程的CPU利用率的方法詳解

    Python獲取某一進(jìn)程的CPU利用率的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)獲取某一進(jìn)程的CPU利用率,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 利用pandas向一個csv文件追加寫入數(shù)據(jù)的實(shí)現(xiàn)示例

    利用pandas向一個csv文件追加寫入數(shù)據(jù)的實(shí)現(xiàn)示例

    這篇文章主要介紹了利用pandas向一個csv文件追加寫入數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 詳解Python生成器和基于生成器的協(xié)程

    詳解Python生成器和基于生成器的協(xié)程

    說到Python協(xié)程就會想到,進(jìn)程和線程,當(dāng)然更離不開生成器.今天就給大家整理了本篇文章,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • python deque模塊簡單使用代碼實(shí)例

    python deque模塊簡單使用代碼實(shí)例

    這篇文章主要介紹了python deque模塊簡單使用代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Pycharm+Python+PyQt5使用詳解

    Pycharm+Python+PyQt5使用詳解

    這篇文章主要介紹了Pycharm+Python+PyQt5使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python實(shí)現(xiàn)的擬合二元一次函數(shù)功能示例【基于scipy模塊】

    Python實(shí)現(xiàn)的擬合二元一次函數(shù)功能示例【基于scipy模塊】

    這篇文章主要介紹了Python實(shí)現(xiàn)的擬合二元一次函數(shù)功能,結(jié)合實(shí)例形式分析了Python基于scipy模塊進(jìn)行二元一次函數(shù)擬合相關(guān)科學(xué)運(yùn)算操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-05-05
  • pyecharts的Tab和Legend布局詳情

    pyecharts的Tab和Legend布局詳情

    這篇文章主要介紹了pyecharts的Tab和Legend布局,pyecharts是百度開源的一款第三方繪圖模塊,結(jié)合的python語言的簡易性和Echarts的強(qiáng)大繪圖特性,可以用python對其調(diào)用,輸出交互性好,精美乖巧且符合審美的圖表,下文我們就來學(xué)習(xí)pyecharts的Tab和Legend煩人布局布局
    2022-03-03
  • Python中的pickle模塊常用函數(shù)

    Python中的pickle模塊常用函數(shù)

    這篇文章主要介紹了Python中的pickle模塊常用函數(shù),pickle模塊使用的數(shù)據(jù)格式是python專用的,能夠把python對象直接保存到文件,而不需要轉(zhuǎn)化為字符串,也不用底層的文件訪問操作把它們寫入到一個二進(jìn)制文件中,需要的朋友可以參考下
    2023-09-09

最新評論