python 物件導向基礎

2021-07-23 09:48:55 字數 2715 閱讀 8101

# !/usr/bin/env python

# coding=utf-8

# 類的簡單測試

class

person

(object):

"""這是類的文件"""

# 建構函式,python中物件的屬性值動態新增

# python 不不支援函式過載

def__init__

(self, name, id):

self.name = name # 例項變數

self.id = id

print

'父類的__init__'

self.__test()

defshow_name

(self):

print

'person name is ', self.name

def__getattr__

(self, item):

print

"__getattr__ >>> "

return

"***"

# 析構方法,刪除物件

# 呼叫示例: del person

def__del__

(self):

pass

# 類的私有方法,不能在類外部進行呼叫

# 兩個下劃線為私有方法的宣告

def__test

(self):

print

'__test 是私有方法'

# print person.__doc__ 列印類文件

# print person.__name__ 列印類名

# print person.__dict__ 列印類類的屬性

# 建立例項物件

person = person('y', 01)

person.name = 'yyy'

# 使用get訪問屬性

print person.__getattr__(person.name)

# del person.name # 刪除這個屬性

""" 使用get set 訪問屬性值

getattr(obj, name[, default]) : 訪問物件的屬性。

hasattr(obj,name) : 檢查是否存在乙個屬性。

setattr(obj,name,value) : 設定乙個屬性。如果屬性不存在,會建立乙個新屬性。

delattr(obj, name) : 刪除屬性。

"""# python 的引用計數(gc機制)

# print id(person) # 列印物件的id

# 引用變化,引用指向的物件沒有發生變化

a = person

b = a

c = person

# id值均相同

print id(a)

print id(b)

print id(c)

# 繼承

"""1:在繼承中基類的構造(__init__()方法)不會被自動呼叫,它需要在其派生類的構造中親自專門呼叫。

2:在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上self引數變數。區別於在類中呼叫普通函式時並不需要帶上self引數

3:python總是首先查詢對應型別的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查詢。

(先在本類中查詢呼叫的方法,找不到才去基類中找)。

"""class

student

(person):

name = 'yangtianrui'

# 類變數,物件可以訪問類變數

def__init__

(self, name, id):

# 需呼叫父類的構造器,必須顯示宣告

person.__init__(self, name, id)

# 訪問類變數

print

'類變數', self.__class__.name

pass

defdisplay

(self):

# 呼叫父類方法的兩種形式,__init__方法也一樣

# person.show_name(self) # 使用類名字首呼叫父方法

# 也可以使用super()執行父類的函式

super(student, self).show_name() # 必須繼承自object

# 類的靜態方法

@staticmethod

defstatic_method

(a, b):

print a + b

# 類的類方法

# 類方法是將類本身作為物件的方法

@classmethod

defclass_method

(cls, x):

print cls.name * x # 將類名輸出x遍

student = student('yyytttrrr', 10)

# 呼叫靜態方法

student.static_method(10, 20) # 也可以使用物件進行呼叫

student.static_method(10, 20)

# 呼叫類方法

student.class_method(2)

student.class_method(3)

# 類變數和例項變數

# 類變數定義在類的定義之後,例項變數則是以為self.開頭

python物件導向基礎 python物件導向基礎

面向過程與物件導向 面向過程的程式設計的核心是過程 流水線式思維 過程即解決問題的步驟,面向過程的設計就好比精心設計好的一條流水線,考慮周全什麼時候處理什麼東西。優點 極大降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點 一套流水線或者流程就是解決乙個問題,牽一髮而動全身。應用場景 一...

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...

python物件導向基礎

類是例項的模版,例項是根據類建立的乙個具體物件,每個物件都有相同的方法,但是各自的資料不同。如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例項的變數名如果以 開頭,就變成了乙個私有變數 private 只有內部可以訪問,外部不能訪問 當子類和父類都存在相同的run...