1. 程式人生 > >python面度對象(屬性,類方法,靜態方法)

python面度對象(屬性,類方法,靜態方法)

名稱 空間 一個 用法 python clas fun span self.

一. 屬性

  所謂的屬性,就是將一個類中的方法偽裝成一個屬性.在代碼的級別是沒有任何本質上的提升.但是讓代碼看起來更順眼.

class Person:
    def __init__(self,name,age):
        self.name = name
        if type(age) is int:
            self.__age = age
        else:
            print( 你輸入的年齡的類型有誤,請輸入數字)
    @property   #屬性的查看. 裝飾器的用法
    def age(self):
        
return self.__age @age.setter #屬性的修改 def age(self,a1): ‘‘‘判斷,你修改的年齡必須是數字‘‘‘ if type(a1) is int: self.__age = a1 else: print(你輸入的年齡的類型有誤,請輸入數字) @age.deleter #屬性的刪除 def age(self): del self.__age p1 = Person(帥哥,20) print
(p1.age) p1.age = 23  #看上去更像是對某一個屬性進行操作 print(p1.age) del p1.age print(p1.__dict__)
技術分享圖片

二. 類方法

  類方法:通過類名調用的方法,類方法中第一個參數約定俗成為cls, python自動將類名(類空間)傳給cls. 

class A:
    def func(self):  # 普通方法
        print(self)

    @classmethod  # 類方法
    def func1(cls):
        print(cls)

a1 = A()
a1.func()

A.func(a1)

A.func1()

a1 
= A() a1.func1() # 對象調用類方法,cls 得到的是類本身.
技術分享圖片

  類方法的使用場景:

    1. 類中有些方法不需要對象的參與時

class A:
    name = ale
    count = 1

    @classmethod
    def func1(cls):  # 此方法無需對象參與
        return cls.name + str(cls.count + 1)

a1 = A()
print(a1.func1())
print(A.func1())
技術分享圖片

    2.對類中的靜態變量進行改變.

    3.繼承中,父類得到子類的類空間.

  也可以不通過類方法,讓父類中的某個方法得到子類空間的任意值

class A:
    age = 12

    def func2(self):
        print(self)  # self 子類的對象,能得到子類 空間的任意值

class B(A):
    age = 22

b1 = B()
b1.func2()

三. 靜態方法

  靜態方法是類中的函數,不需要實例。靜態方法主要是用來存放邏輯性的代碼,主要是一些邏輯屬於類,但是和類本身沒有交互,即在靜態方法中,不會涉及到類中的方法和屬性的操作。可以理解為將靜態方法存在此類的名稱空間中。事實上,在python引入靜態方法之前,通常是在全局名稱空間中創建函數

  @staticmethod 裝飾靜態方法

  好處:

    代碼塊清晰

    提高復用性

 

  

python面度對象(屬性,類方法,靜態方法)