# !/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...