物件導向_類_例項_裝飾器_繼承
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把物件作為程式的...