濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解Python類和對象內容

詳解Python類和對象內容

熱門標簽:高德地圖標注是免費的嗎 老人電話機器人 梅州外呼業(yè)務系統(tǒng) 洪澤縣地圖標注 百度地圖標注位置怎么修改 大連crm外呼系統(tǒng) 無錫客服外呼系統(tǒng)一般多少錢 北京電信外呼系統(tǒng)靠譜嗎 地圖標注視頻廣告

一、什么是Python類?

python中的類是創(chuàng)建特定對象的藍圖。它使您可以以特定方式構建軟件。問題來了,怎么辦?類允許我們以一種易于重用的方式對我們的數據和函數進行邏輯分組,并在需要時進行構建??紤]下圖。

在第一張圖片(A)中,它代表了一個可以被視為Class的房子的藍圖。使用相同的藍圖,我們可以創(chuàng)建多個房屋,這些可以視為Objects。使用類,您可以為您的程序添加一致性,以便以更簡潔、更有效的方式使用它們。屬性是通過點表示法訪問的數據成員(類變量和實例變量)和方法。

  • 類變量是一個類的所有不同對象/實例共享的變量。
  • 實例變量是每個實例唯一的變量。它是在方法內部定義的,并且只屬于類的當前實例。
  • 方法也稱為函數,它們在類中定義并描述對象的行為。

現(xiàn)在,讓我們繼續(xù)前進,看看它在PyCharm中是如何工作的。要開始,首先看一下python類的語法。

語法:

class Class_name:
statement-1
.
.
statement-N

在這里,“class”語句創(chuàng)建了一個新的類定義。類的名稱緊跟在python中的關鍵字“class”之后,后跟一個冒號。要在python中創(chuàng)建一個類,請考慮以下示例:

class employee:
 pass
 #no attributes and methods
 emp_1=employee()
 emp_2=employee()
 #instance variable can be created manually
 emp_1.first='aayushi'
 emp_1.last='Johari'
 emp_1.email='aayushi@edureka.co'
 emp_1.pay=10000
 
emp_2.first='test'
 emp_2.last='abc'
 emp_2.email='test@company.com'
 emp_2.pay=10000
 print(emp_1.email)
 print(emp_2.email)

輸出–

aayushi@edureka.co

test@company.com

現(xiàn)在,如果我們不想手動設置這些變量怎么辦。你會看到很多代碼,而且很容易出錯。所以為了讓它自動,我們可以使用“init”方法。為此,讓我們了解一下Python類中的方法和屬性到底是什么。

二、Python類中的方法和屬性

2.1、Python類中的方法

如果沒有一些功能,現(xiàn)在創(chuàng)建一個類是不完整的。因此,可以通過設置各種屬性來定義功能,這些屬性充當與這些屬性相關的數據和功能的容器。python中的函數也稱為方法。談到init方法,它是一個特殊的函數,每當實例化該類的新對象時都會調用它。您可以將其視為initialize方法,或者如果您來自任何其他面向對象的編程背景,例如C++、Java等,則可以將其視為構造函數。現(xiàn)在當我們在類中設置方法時,它們會自動接收實例。讓我們繼續(xù)使用python類并使用此方法接受名字、姓氏和薪水。

class employee:
    def __init__(self, first, last, sal):
        self.fname=first
        self.lname=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
 
emp_1=employee('aayushi','johari',350000)
emp_2=employee('test','test',100000)
print(emp_1.email)
print(emp_2.email)

現(xiàn)在在我們的“init”方法中,我們設置了這些實例變量(self、first、last、sal)。Self是實例,這意味著每當我們寫self.fname=first時,它與emp_1.first='aayushi'相同。然后我們創(chuàng)建了員工類的實例,我們可以在其中傳遞init方法中指定的值。此方法將實例作為參數?,F(xiàn)在它將自動完成,而不是手動完成。

接下來,我們希望能夠執(zhí)行某種操作。為此,我們將向此類添加一個方法。假設我想要顯示員工全名的功能。因此,讓我們實際實現(xiàn)這一點。

class employee:
    def __init__(self, first, last, sal):
        self.fname=first
        self.lname=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
 
    def fullname(self):
            return '{}{}'.format(self.fname,self.lname)
 
emp_1=employee('aayushi','johari',350000)
emp_2=employee('test','test',100000)
print(emp_1.email)
print(emp_2.email)
print(emp_1.fullname())
print(emp_2.fullname())

輸出–

aayushi.johari@company.com 

 test.test@company.com 

 aayushijohari 

 TESTTEST

正如你在上面看到的,我在一個類中創(chuàng)建了一個名為“全名”的方法。因此,python類中的每個方法都會自動將實例作為第一個參數?,F(xiàn)在在這個方法中,我編寫了打印全名并返回這個而不是emp_1名字和姓氏的邏輯。接下來,我使用了“self”,以便它適用于所有實例。因此每次都打印這個,我們使用一個方法。

繼續(xù)使用Python類,有一些變量在類的所有實例之間共享。這些被稱為類變量。實例變量對于每個實例都可以是唯一的,例如姓名、電子郵件、sal等。復雜嗎?讓我們通過一個例子來理解這一點。請參閱下面的代碼以了解工資的年度增長情況。

class employee:
    perc_raise =1.05
    def __init__(self, first, last, sal):
        self.fname=first
        self.lname=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
 
    def fullname(self):
            return '{}{}'.format(self.fname,self.lname)
    def apply_raise(self):
        self.sal=int(self.sal*1.05)
 
emp_1=employee('aayushi','johari',350000)
emp_2=employee('test','test',100000)
 
print(emp_1.sal)
emp_1.apply_raise()
print(emp_1.sal)

輸出–

350000

 367500

正如你在上面看到的,我先打印了工資,然后應用了1.5%的增長。為了訪問這些類變量,我們需要通過類或類的實例來訪問它們。現(xiàn)在,讓我們了解Python類中的各種屬性。

2.2、Python類中的屬性

Python中的屬性定義了對象、元素或文件的屬性。有兩種類型的屬性:

內置類屬性:Python類中存在各種內置屬性。例如_dict_、_doc_、_name _等。讓我舉同樣的例子,我想查看employee1的所有鍵值對。為此,您可以簡單地編寫以下包含類命名空間的語句:

打印

(emp_1.__dict__)

執(zhí)行之后,你會得到這樣的輸出:

{'fname': 'aayushi', 'lname': 'johari', 'sal': 350000, 'email': 'aayushi.johari@company.com'}

用戶定義的屬性:屬性是在類定義中創(chuàng)建的。我們可以為類的現(xiàn)有實例動態(tài)創(chuàng)建新屬性。屬性也可以綁定到類名。

接下來,我們有public、protected和private屬性。讓我們詳細了解它們:

接下來,讓我們了解一個python類中最重要的組件,即Objects。

正如我們上面討論的,一個對象可以用來訪問不同的屬性。它用于創(chuàng)建類的實例。實例是在運行時創(chuàng)建的類的對象。

給你一個快速瀏覽,對象主要是看到周圍的一切。例如:狗是動物類的對象,我是人類類的對象。同樣,同一個電話類可以有不同的對象。這與我們已經討論過的函數調用非常相似。讓我們通過一個例子來理解這一點:

class MyClass:
 
   def func(self):
      print('Hello')
 
# create a new MyClass
ob = MyClass()
ob.func()

繼續(xù)使用python類,讓我們了解各種OOP概念。

三、面向對象的概念

OOPs指的是Python中的面向對象編程。好吧,Python并不是完全面向對象的,因為它包含一些過程函數?,F(xiàn)在,您一定想知道過程編程和面向對象編程之間有什么區(qū)別。為了消除您的疑問,在過程式編程中,整個代碼都被寫入一個長過程,即使它可能包含函數和子例程。由于數據和邏輯混合在一起,因此無法管理。但是當我們談論面向對象編程時,程序被拆分為獨立的對象或幾個小程序。每個對象代表應用程序的不同部分,這些部分有自己的數據和邏輯來在它們之間進行通信。例如,一個網站有不同的對象,如圖像、視頻等。

面向對象編程包括Python類、對象、繼承、多態(tài)、抽象等概念,下面讓我們詳細了解這些主題。

3.1、Python類:繼承

繼承允許我們從基類/父類繼承屬性和方法。這很有用,因為我們可以創(chuàng)建子類并從父類中獲取所有功能。然后我們可以在不影響父類的情況下覆蓋和添加新功能。讓我們通過一個例子來理解父類和子類的概念。

正如我們在圖像中看到的,孩子繼承了父親的屬性。同樣,在python中,有兩個類:

1.父類(Super或Base類)

2.子類(子類或派生類)

繼承屬性的類稱為子類,而繼承屬性的類稱為父類。

繼承是指創(chuàng)建包含其父類的專業(yè)化的子類的能力。它進一步分為四種類型,即單繼承、多級繼承、分層繼承和多重繼承。請參考下圖以獲得更好的理解。

讓我們繼續(xù)使用python類并了解繼承是如何有用的。

比如說,我想為員工類型創(chuàng)建類。我將創(chuàng)建'developers'和'managers'作為子類,因為開發(fā)人員和經理都有姓名、電子郵件和薪水,所有這些功能都在員工類中。因此,我們不必復制子類的代碼,而是可以通過從員工那里繼承來簡單地重用代碼。

class employee:
    num_employee=0
    raise_amount=1.04
    def __init__(self, first, last, sal):
        self.first=first
        self.last=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
        employee.num_employee+=1
    def fullname (self):
        return '{} {}'.format(self.first, self.last)
    def apply_raise (self):
        self.sal=int(self.sal * raise_amount)
class developer(employee):
    pass
 
emp_1=developer('aayushi', 'johari', 1000000)
print(emp_1.email)

輸出-

aayushi.johari@company.com

正如您在上面的輸出中看到的,employee類的所有詳細信息都可以在developer類中找到。現(xiàn)在,如果我想將開發(fā)人員的raise_amount更改為10%怎么辦?讓我們看看它是如何實際完成的。

class employee:
    num_employee=0
    raise_amount=1.04
    def __init__(self, first, last, sal):
        self.first=first
        self.last=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
        employee.num_employee+=1
    def fullname (self):
        return '{} {}'.format(self.first, self.last)
    def apply_raise (self):
        self.sal=int(self.sal* raise_amount)
 
class developer(employee):
    raise_amount = 1.10
 
emp_1=developer('aayushi', 'johari', 1000000)
print(emp_1.raise_amount)

如您所見,它已將工資增長百分比從4%更新為10%?,F(xiàn)在,如果我想再添加一個屬性,比如在我們的init方法中使用一種編程語言,但它在我們的父類中不存在。有什么解決辦法嗎?是的!我們可以復制整個員工邏輯并這樣做,但它會再次增加代碼大小。因此,為了避免這種情況,讓我們考慮以下代碼:

class employee:
    num_employee=0
    raise_amount=1.04
    def __init__(self, first, last, sal):
        self.first=first
        self.last=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
        employee.num_employee+=1
    def fullname (self):
        return '{} {}'.format(self.first, self.last)
    def apply_raise (self):
        self.sal=int(self.sal* raise_amount)
class developer(employee):
    raise_amount = 1.10
    def __init__(self, first, last, sal, prog_lang):
        super().__init__(first, last, sal)
        self.prog_lang=prog_lang
 
emp_1=developer('aayushi', 'johari', 1000000, 'python')
print(emp_1.prog_lang)

因此,只用一點點代碼,我就進行了更改。我使用了super.__init__(first, last, pay)它繼承了基類的屬性。總之,繼承用于重用代碼并降低程序的復雜性。

3.2、Python類:多態(tài)性

計算機科學中的多態(tài)性是為不同的底層形式呈現(xiàn)相同界面的能力。實際上,多態(tài)意味著如果類B從類A繼承,它不必繼承關于類A的所有內容,它可以做一些與類A不同的事情。它最常用于處理繼承。Python是隱式多態(tài)的,它能夠重載標準運算符,以便它們根據上下文具有適當的行為。

讓我們通過一個例子來理解:

class Animal:
    def __init__(self,name):
        self.name=name
        def talk(self):
            pass
class Dog(Animal):
            def talk(self):
                print('Woof')
class Cat(Animal):
    def talk(self):
        print('MEOW!')
c= Cat('kitty')
c.talk()
d=Dog(Animal)
d.talk()

輸出-

Meow!Woof

接下來,讓我們轉向另一個面向對象的編程概念,即抽象。

3.3、Python類:抽象

抽象用于通過建模適合問題的類來簡化復雜的現(xiàn)實。在這里,我們有一個無法實例化的抽象類。這意味著您不能為這些類創(chuàng)建對象或實例。它只能用于繼承您稱為基類的某些功能。因此,您可以繼承功能,但同時,您無法創(chuàng)建此特定類的實例。讓我們通過下面的例子來理解抽象類的概念:

from abc import ABC, abstractmethod     
 
class Employee(ABC):
    @abstractmethod
 
    def calculate_salary(self,sal):
        pass
 
class Developer(Employee):
 
    def calculate_salary(self,sal):
        finalsalary= sal*1.10
        return  finalsalary
 
emp_1 = Developer()
print(emp_1.calculate_salary(10000))

輸出–

11000.0

正如你在上面的輸出中看到的,我們已經將基本工資增加到10%,即現(xiàn)在的工資是11000?,F(xiàn)在,如果你真的繼續(xù)創(chuàng)建一個“Employee”類的對象,它會拋出一個錯誤,因為python不會'不允許你創(chuàng)建抽象類的對象。但是使用繼承,您實際上可以繼承屬性并執(zhí)行相應的任務。

以上就是詳解Python類和對象內容的詳細內容,更多關于Python類和對象的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Python實現(xiàn)動態(tài)給類和對象添加屬性和方法操作示例
  • Python面向對象中類(class)的簡單理解與用法分析
  • python實現(xiàn)比較類的兩個instance(對象)是否相等的方法分析
  • Python面向對象程序設計類變量與成員變量、類方法與成員方法用法分析
  • Python面向對象程序設計中類的定義、實例化、封裝及私有變量/方法詳解
  • Python類的繼承、多態(tài)及獲取對象信息操作詳解
  • Python類和對象的定義與實際應用案例分析
  • 在python的類中動態(tài)添加屬性與生成對象
  • 全面了解python中的類,對象,方法,屬性

標簽:長春 洛陽 吉林 岳陽 怒江 泉州 安慶 清遠

巨人網絡通訊聲明:本文標題《詳解Python類和對象內容》,本文關鍵詞  詳解,Python,類和,對象,內容,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Python類和對象內容》相關的同類信息!
  • 本頁收集關于詳解Python類和對象內容的相關信息資訊供網民參考!
  • 推薦文章
    揭西县| 宁南县| 治县。| 涡阳县| 梁河县| 麻城市| 时尚| 南丰县| 突泉县| 禹城市| 岢岚县| 锡林郭勒盟| 闽清县| 紫云| 广汉市| 台州市| 内丘县| 仁化县| 上栗县| 合山市| 明溪县| 汤原县| 察哈| 太白县| 余干县| 南靖县| 德安县| 普定县| 吉首市| 双城市| 金堂县| 平山县| 元朗区| 克拉玛依市| 垫江县| 盐城市| 当阳市| 江陵县| 松滋市| 沅陵县| 澄迈县|