AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

玩轉(zhuǎn)Python屬性和方法,成為高手不再難!

來源: 責(zé)編: 時(shí)間:2023-09-22 20:13:04 363觀看
導(dǎo)讀Python是一種簡潔而強(qiáng)大的編程語言,其支持面向?qū)ο蟮木幊谭妒健T赑ython中,屬性和方法是面向?qū)ο缶幊痰暮诵母拍钪弧1疚膶娜腴T到精通介紹Python中的屬性和方法,幫助你深入了解這些重要的概念,并學(xué)會如何在實(shí)際開發(fā)中

Python是一種簡潔而強(qiáng)大的編程語言,其支持面向?qū)ο蟮木幊谭妒健T赑ython中,屬性和方法是面向?qū)ο缶幊痰暮诵母拍钪弧1疚膶娜腴T到精通介紹Python中的屬性和方法,幫助你深入了解這些重要的概念,并學(xué)會如何在實(shí)際開發(fā)中靈活應(yīng)用它們。0ds28資訊網(wǎng)——每日最新資訊28at.com

0ds28資訊網(wǎng)——每日最新資訊28at.com

一、屬性是什么?

屬性是對象的特性或數(shù)據(jù),可以通過點(diǎn)(.)操作符來訪問。在Python中,有兩種類型的屬性:實(shí)例屬性和類屬性。0ds28資訊網(wǎng)——每日最新資訊28at.com

1. 實(shí)例屬性

實(shí)例屬性屬于類的實(shí)例,每個(gè)實(shí)例都有自己的副本。可以在類的__init__方法中進(jìn)行初始化。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Person:    def __init__(self, name, age):        self.name = name  # 實(shí)例屬性name        self.age = age    # 實(shí)例屬性age# 創(chuàng)建Person實(shí)例person1 = Person("Alice", 30)person2 = Person("Bob", 25)# 訪問實(shí)例屬性print(person1.name)  # 輸出: "Alice"print(person2.age)   # 輸出: 25

2. 類屬性

類屬性屬于類本身,所有實(shí)例共享同一個(gè)屬性副本。通常在類的頂層進(jìn)行定義。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Car:    # 類屬性    wheels = 4    def __init__(self, make, model):        self.make = make  # 實(shí)例屬性make        self.model = model  # 實(shí)例屬性model        # 創(chuàng)建Car實(shí)例car1 = Car("Toyota", "Camry")car2 = Car("Honda", "Civic")# 訪問類屬性print(car1.wheels)  # 輸出: 4print(car2.wheels)  # 輸出: 4

3. 屬性訪問器和修改器(Getter和Setter)

屬性訪問器(Getter)和修改器(Setter)是用來訪問和修改屬性的特殊方法。使用它們可以在訪問屬性時(shí)進(jìn)行額外的邏輯處理。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Circle:    def __init__(self, radius):        self._radius = radius  # 私有屬性,約定使用下劃線開頭    # 屬性訪問器(Getter)    @property    def radius(self):        return self._radius    # 屬性修改器(Setter)    @radius.setter    def radius(self, value):        if value >= 0:            self._radius = value        else:            raise ValueError("半徑不能為負(fù)數(shù)")# 創(chuàng)建Circle實(shí)例circle = Circle(5)# 使用屬性訪問器獲取半徑print(circle.radius)  # 輸出: 5# 使用屬性修改器設(shè)置半徑circle.radius = 10print(circle.radius)  # 輸出: 10# 嘗試設(shè)置負(fù)數(shù)半徑,將會引發(fā)ValueErrorcircle.radius = -1

在上述代碼中,我們使用@property裝飾器定義了一個(gè)名為radius的屬性訪問器,用于獲取_radius的值。同時(shí),使用@radius.setter裝飾器定義了屬性修改器,用于設(shè)置_radius的值。這樣,我們可以像訪問普通屬性一樣使用circle.radius來獲取和設(shè)置_radius的值。0ds28資訊網(wǎng)——每日最新資訊28at.com

二、方法是什么?

方法是類中定義的函數(shù),用于執(zhí)行特定的操作。在Python中,有三種類型的方法:實(shí)例方法、類方法和靜態(tài)方法。0ds28資訊網(wǎng)——每日最新資訊28at.com

1. 實(shí)例方法

實(shí)例方法是最常見的方法類型,其第一個(gè)參數(shù)通常為self,表示對類的實(shí)例進(jìn)行操作。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Dog:    def __init__(self, name):        self.name = name        # 實(shí)例方法    def bark(self):        return "汪汪!我是" + self.name        # 創(chuàng)建Dog實(shí)例dog = Dog("小白")# 調(diào)用實(shí)例方法print(dog.bark())  # 輸出: "汪汪!我是小白"

2. 類方法

類方法是使用@classmethod裝飾器定義的方法,在調(diào)用時(shí),Python會將類本身傳遞給第一個(gè)參數(shù)(通常命名為cls),表示對類進(jìn)行操作。0ds28資訊網(wǎng)——每日最新資訊28at.com

class MathUtils:    PI = 3.1415926    # 類方法    @classmethod    def circle_area(cls, radius):        return cls.PI * radius * radius# 調(diào)用類方法area = MathUtils.circle_area(5)print(area)  # 輸出: 78.539815

在上述代碼中,我們使用類方法circle_area計(jì)算圓的面積,注意我們在類方法中可以使用類的屬性cls.PI。0ds28資訊網(wǎng)——每日最新資訊28at.com

3. 靜態(tài)方法

靜態(tài)方法是使用@staticmethod裝飾器定義的方法,它不需要特殊的參數(shù)(如self或cls)。靜態(tài)方法與類和實(shí)例無關(guān),通常用于執(zhí)行與類相關(guān)的實(shí)用函數(shù)。0ds28資訊網(wǎng)——每日最新資訊28at.com

class StringUtils:    # 靜態(tài)方法    @staticmethod    def is_palindrome(s):        return s == s[::-1]# 調(diào)用靜態(tài)方法result = StringUtils.is_palindrome("level")print(result)  # 輸出: True

在上述代碼中,我們使用靜態(tài)方法is_palindrome檢查給定的字符串是否為回文。0ds28資訊網(wǎng)——每日最新資訊28at.com

三、屬性與方法的裝飾器

屬性和方法的裝飾器是Python中用于對屬性和方法進(jìn)行額外操作的特殊注解。裝飾器能夠簡化代碼、提高代碼的復(fù)用性,并使代碼更加優(yōu)雅。本節(jié)將介紹三種常用的裝飾器:@property、@classmethod和@staticmethod。0ds28資訊網(wǎng)——每日最新資訊28at.com

1. @property裝飾器

@property裝飾器用于將一個(gè)方法轉(zhuǎn)換為只讀屬性,使得我們可以像訪問屬性一樣訪問這個(gè)方法,而無需使用括號。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Circle:    def __init__(self, radius):        self._radius = radius  # 私有屬性,約定使用下劃線開頭    # 屬性訪問器(Getter)    @property    def radius(self):        return self._radius    # 計(jì)算圓的面積    def area(self):        return 3.14159 * self._radius * self._radius# 創(chuàng)建Circle實(shí)例circle = Circle(5)# 使用屬性訪問器獲取半徑print(circle.radius)  # 輸出: 5# 使用方法計(jì)算圓的面積print(circle.area())  # 輸出: 78.53975# 使用屬性訪問器獲取面積(注意:這里不需要加括號)print(circle.area)  # 輸出: <bound method Circle.area of <__main__.Circle object at 0x...>>

在上述代碼中,我們定義了一個(gè)Circle類,其中area方法用于計(jì)算圓的面積,@property裝飾器將radius方法轉(zhuǎn)換為只讀屬性。使用@property裝飾器后,我們可以像訪問屬性一樣訪問circle.radius獲取圓的半徑。0ds28資訊網(wǎng)——每日最新資訊28at.com

2. @classmethod裝飾器

@classmethod裝飾器用于定義類方法,類方法的第一個(gè)參數(shù)通常命名為cls,表示對類本身進(jìn)行操作。0ds28資訊網(wǎng)——每日最新資訊28at.com

class MathUtils:    PI = 3.1415926    # 類方法    @classmethod    def circle_area(cls, radius):        return cls.PI * radius * radius# 調(diào)用類方法area = MathUtils.circle_area(5)print(area)  # 輸出: 78.539815

在上述代碼中,我們定義了一個(gè)MathUtils類,其中的circle_area方法是一個(gè)類方法,用于計(jì)算圓的面積。在類方法內(nèi)部,我們可以通過cls訪問類的屬性和方法。0ds28資訊網(wǎng)——每日最新資訊28at.com

3. @staticmethod裝飾器

@staticmethod裝飾器用于定義靜態(tài)方法,靜態(tài)方法與類和實(shí)例無關(guān),通常用于執(zhí)行與類相關(guān)的實(shí)用函數(shù)。0ds28資訊網(wǎng)——每日最新資訊28at.com

class StringUtils:    # 靜態(tài)方法    @staticmethod    def is_palindrome(s):        return s == s[::-1]# 調(diào)用靜態(tài)方法result = StringUtils.is_palindrome("level")print(result)  # 輸出: True

在上述代碼中,我們定義了一個(gè)StringUtils類,其中的is_palindrome方法是一個(gè)靜態(tài)方法,用于判斷給定的字符串是否為回文。總結(jié)一下,裝飾器是Python中強(qiáng)大且靈活的特性,它們可以在不修改原始代碼的情況下,為屬性和方法添加額外的功能。@property裝飾器用于將方法轉(zhuǎn)換為只讀屬性,@classmethod裝飾器用于定義類方法,@staticmethod裝飾器用于定義靜態(tài)方法。在使用裝飾器時(shí),要根據(jù)具體的需求選擇合適的裝飾器類型,以提高代碼的可讀性和可維護(hù)性。0ds28資訊網(wǎng)——每日最新資訊28at.com

4. 屬性和方法的繼承

在Python中,子類可以繼承父類的屬性和方法。子類可以在繼承的基礎(chǔ)上進(jìn)行擴(kuò)展和修改,或者覆蓋父類的方法。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Animal:    def __init__(self, species):        self.species = species    def make_sound(self):        return "吱吱"  # 默認(rèn)動物叫聲class Dog(Animal):    def __init__(self, name):        super().__init__("犬科")        self.name = name        # 重寫make_sound方法    def make_sound(self):        return "汪汪!我是" + self.name        # 創(chuàng)建Dog實(shí)例dog = Dog("小白")# 調(diào)用繼承的方法print(dog.species)   # 輸出: "犬科"# 調(diào)用子類的方法(覆蓋了父類的方法)print(dog.make_sound())  # 輸出: "汪汪!我是小白"

在上述代碼中,我們定義了一個(gè)Animal類,它有一個(gè)實(shí)例屬性species和一個(gè)實(shí)例方法make_sound。然后,我們定義了一個(gè)Dog類,它繼承了Animal類,并且在子類中重寫了make_sound方法。0ds28資訊網(wǎng)——每日最新資訊28at.com

五、特殊方法(魔術(shù)方法)

特殊方法,也被稱為魔術(shù)方法,以雙下劃線__開頭和結(jié)尾。它們是Python中用于實(shí)現(xiàn)類的特殊行為的方法。0ds28資訊網(wǎng)——每日最新資訊28at.com

1. __init__方法

__init__方法是構(gòu)造函數(shù),在創(chuàng)建對象時(shí)自動調(diào)用,用于對對象進(jìn)行初始化。(以下示例在實(shí)例方法部分已經(jīng)有過示例,這里不再重復(fù)。)0ds28資訊網(wǎng)——每日最新資訊28at.com

2. __str__方法

__str__方法返回對象的字符串表示,可用于自定義對象在print函數(shù)中的輸出。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Person:    def __init__(self, name, age):        self.name = name        self.age = age        # 自定義__str__方法    def __str__(self):        return f"{self.name},{self.age}歲"        # 創(chuàng)建Person實(shí)例person = Person("Alice", 30)# 調(diào)用print函數(shù)輸出對象print(person)  # 輸出: "Alice,30歲"

在上述代碼中,我們定義了一個(gè)Person類,并且自定義了__str__方法,使其在print函數(shù)中輸出我們想要的格式。0ds28資訊網(wǎng)——每日最新資訊28at.com

3. __repr__方法

__repr__方法返回對象的“官方”字符串表示,可用于在交互式環(huán)境中直接輸出對象。0ds28資訊網(wǎng)——每日最新資訊28at.com

class Point:    def __init__(self, x, y):        self.x = x        self.y = y        # 自定義__repr__方法    def __repr__(self):        return f"Point({self.x}, {self.y})"        # 創(chuàng)建Point實(shí)例point = Point(1, 2)# 在交互式環(huán)境中輸出對象point  # 輸出: Point(1, 2)

在上述代碼中,我們定義了一個(gè)Point類,并且自定義了__repr__方法,使其在交互式環(huán)境中直接輸出對象的官方表示。0ds28資訊網(wǎng)——每日最新資訊28at.com

4. 其他常用的魔術(shù)方法

除了上述介紹的魔術(shù)方法,Python還提供了許多其他魔術(shù)方法,如__add__、__sub__、__eq__、__lt__等,用于實(shí)現(xiàn)對象之間的運(yùn)算和比較。詳細(xì)內(nèi)容可以參考Python官方文檔。0ds28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

本文從屬性和方法的基本概念入手,逐步深入介紹了Python中的屬性與方法,包括實(shí)例屬性、類屬性、屬性訪問器和修改器、實(shí)例方法、類方法、靜態(tài)方法、裝飾器、繼承、特殊方法等內(nèi)容。希望通過本文的講解,你對Python的面向?qū)ο缶幊逃辛烁羁痰睦斫猓⒛茉趯?shí)際開發(fā)中靈活應(yīng)用這些知識。0ds28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-11219-0.html玩轉(zhuǎn)Python屬性和方法,成為高手不再難!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 后端|一個(gè)分布式鎖「失效」的案例分析

下一篇: 數(shù)據(jù)工程中的單元測試完全指南(上)

標(biāo)簽:
  • 熱門焦點(diǎn)
  • K60至尊版剛預(yù)熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競品的一加也坐不住了。一加中國區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 28個(gè)SpringBoot項(xiàng)目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關(guān)的知識。本文主要對一些常用的注解進(jìn)行了總結(jié),同時(shí)也會舉出具體例子,供大家學(xué)習(xí)和參考。注解
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設(shè)置樣式。可以為擁有指定屬性的 HTML 元素設(shè)置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 2023年,我眼中的字節(jié)跳動

    此時(shí)此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計(jì)劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強(qiáng)勢崛起,到2018年的&ldquo;頭騰
  • 電視息屏休眠仍有網(wǎng)絡(luò)上傳 愛奇藝被質(zhì)疑“薅消費(fèi)者羊毛”

    記者丨寧曉敏 見習(xí)生丨汗青出品丨鰲頭財(cái)經(jīng)(theSankei) 前不久,愛奇藝發(fā)布了一份亮眼的一季報(bào),不僅營收和會員營收創(chuàng)造歷史最佳表現(xiàn),其運(yùn)營利潤也連續(xù)6個(gè)月實(shí)現(xiàn)增長。自去年年初
  • 騰訊蓋樓,字節(jié)拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗(yàn)嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 簽約井川里予、何丹彤,單視頻點(diǎn)贊近千萬,MCN黑馬永恒文希快速崛起!

    來源:視聽觀察永恒文希傳媒作為一家MCN公司,說起它的名字來,可能大家會覺得有點(diǎn)兒陌生,但是說出來下面一串的名字之后,或許大家就會感到震驚,原來這么多網(wǎng)紅,都簽約這家公司了。根
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報(bào)道稱,近期淘寶天貓集團(tuán)啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災(zāi)

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災(zāi)。攜手抗災(zāi),京冀安康!以下為公告原文
Top