Python物件導向 類 例項 裝飾器

2021-10-18 13:18:04 字數 3095 閱讀 7976

物件導向_類_例項_裝飾器_繼承

class recatangle:   # 新建乙個長方形的類

def __init__(self, length, width):

self.length = length

self.width = width

# 只能由例項呼叫,稱為例項方法

def permeter(self):

return (self.length + self.width)*2

# 只能由例項呼叫,稱為例項方法

def area(self):

return self.length * self.width

# 裝飾器,表示下面的方法是類方法

@classmethod

def features(cls):

print('兩邊的長相等,兩邊的寬也相等,長和寬的角度為90°')

# 裝飾器,表示下面的方法是靜態方法

# 靜態方法本質上是函式,只是寫在了類裡面

@staticmethod

def sumdata(a, b):

return a + b

1、類/靜態方法既可以由例項呼叫,也可以由類呼叫

rec = recatangle(6, 4)   # 例項化乙個長方形

rec.permeter() # 呼叫周長計算公式方法

rec.area() # 呼叫面積計算公式方法

rec.features() # 呼叫類方法,由例項呼叫

recatangle.features() # 呼叫類方法,由類呼叫

rec.sumdata(10, 10) # 呼叫靜態方法,由例項呼叫

recatangle.sumdata(10, 10) # 呼叫靜態方法,由類呼叫

2、可以用type的方式檢視是方法還是函式

# print(type(rec.features))   # 類方法是method

# print(type(rec.sumdata)) # 靜態方法是function

# 輸出:

# #

2、inspect模組

# python的自檢模組,可以判斷某個物件是否是某種型別,返回值是布林型

import inspect

print(inspect.ismethod(rec.features)) # 判斷某個物件是否是method

print(inspect.isfunction(rec.sumdata)) # 判斷某個物件是否是function

print(inspect.isclass(recatangle)) # 判斷某個物件是否是class

# 輸出:

# true

# true

# true

3、繼承-完全繼承

class square(recatangle):  # 定義正方形類

pass

squ = square(6, 6) # 例項化乙個正方形

squ.permeter() # 繼承長方形的周長計算公式方法

squ.area() # 繼承長方形的面積計算公式方法

squ.features() # 繼承長方形的類方法,由例項呼叫

square.features() # 繼承長方形的類方法,由類呼叫

squ.sumdata(10, 10) # 繼承長方形的靜態方法,由例項呼叫

square.sumdata(10, 10) # 繼承長方形的靜態方法,由類呼叫

4、繼承-部分繼承,改寫一些方法

class square(recatangle):

def __init__(self, side): # 當子類的某個方法與父類的同名時,則會覆蓋父類的方法

self.length = side

self.width = side

squ = square(6) # 例項化乙個正方形

squ.permeter() # 繼承長方形的周長計算公式方法

squ.area() # 繼承長方形的面積計算公式方法

squ.features() # 繼承長方形的類方法,由例項呼叫

square.features() # 繼承長方形的類方法,由類呼叫

squ.sumdata(10, 10) # 繼承長方形的靜態方法,由例項呼叫

square.sumdata(10, 10) # 繼承長方形的靜態方法,由類呼叫

5、繼承-對父類的方法進行拓展,既有父類的東西,也有自己的東西

class square(recatangle):

def __init__(self, side): # 當子類的某個方法與父類的同名時,則會覆蓋父類的方法

self.length = side

self.width = side

@classmethod

def features(cls):

super().features() # 宣告繼承父類的同名方法的**

# recatangle.features() # 這種寫法也可以

print('長和寬也相等')

squ = square(6) # 例項化乙個正方形

squ.permeter() # 繼承長方形的周長計算公式方法

squ.area() # 繼承長方形的面積計算公式方法

squ.features() # 繼承長方形的類方法,由例項呼叫

square.features() # 繼承長方形的類方法,由類呼叫

squ.sumdata(10, 10) # 繼承長方形的靜態方法,由例項呼叫

square.sumdata(10, 10) # 繼承長方形的靜態方法,由類呼叫

python中物件導向的類和裝飾器

class demomthd 定義乙個類 staticmethod 靜態方法裝飾器 defstatic method 定義乙個靜態方法 print 此處呼叫了靜態方法 classmethod 定義乙個類方法裝飾器 defclass method cls 定義乙個類方法 print 此處呼叫了類方法 ...

python物件導向程式設計 類和例項化

物件導向程式設計有三大特徵 封裝,繼承,多型 封裝 讓 有了的完整性,把客觀的現實中存在的事物抽象成計算機中的物件 好處 將變化隔離 便於使用 提高復用性 提高安全性 繼承 物件導向的乙個重要特性是復用性.繼承是實現復用性的乙個重要手段.可以在不重複編寫以實現的功能的前提下,對功能進行復用和拓展.繼...

python3 物件導向 類和例項

面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把大塊函式通過切割成小塊函式來降低系統的複雜度。物件導向程式設計 object oriented programming,簡稱oop,是一種程式設計思想。oop把物件作為程式的...