Python 基礎知識2

2021-07-11 22:21:48 字數 2462 閱讀 5235

1. 類新增新屬性和新屬性賦值:

__metaclass__ = type

class rectangle:

def __init__(self):

self.width = 0

self.height = 0

def __setattr__(self, name, value):

if name == 'size': # size property = value

self.width, self.height = value

else: #insert new property by dict

self.__dict__[name] = value

def __getattr__(self, name):

if name == 'size':

return self.width, self.height

else:

raise attributeerror

re = rectangle()

re.size = (10,20)

re.pro =

print re.size

print re.pro

__metaclass__ = type

class rec:

def __init__(self):

self.width = 0

self.height = 0

def setsize(self, size):

self.width, self.height = size

def getsize(self):

return self.width, self.height

size = property(getsize, setsize)

rc = rec()

rc.size = (2,3)

print rc.size

2.序列和對映:

__metaclass__ = type

def checkindex(key):

if not isinstance(key, (int, long) ): raise typeerror

if key < 0: raise indexerror

class arithmeticsequence:

def __init__(self, start = 0, step = 1):

self.start = start

self.step = step

self.changed = {}

def __getitem__(self, key):

checkindex(key)

try: return self.changed[key]

except keyerror:

return self.start+key*self.step

def __setitem__(self, key, value):

checkindex(key)

self.changed[key] = value

s = arithmeticsequence(1, 2)

print s[4]

3. __setattr__, __getattr__, __delattr__, __call__定義與用法:

__metaclass__ = type 

#新類語法

class mydict(dict): #繼承dict類

#當試圖給特性key賦值時被呼叫

def __setattr__(self, key, value):

self[key] = value

#當特性key被訪問且物件沒有響應的特性時被呼叫

def __getattr__(self, key):

try:

return self[key]

except keyerror, k:

return none

#當試圖刪除特性key時被自動呼叫

def __delattr__(self, key):

try:

del self[key]

except keyerror, k:

return none

#當試圖呼叫特性key時被呼叫

def __call__(self, key):

try:

return self[key]

except keyerror, k:

return none

test = mydict()

test.name = "benson" #呼叫__setattr__

print test('name') #__call__

print test['name'] #dict預設行為

print test.name #__getattr__

del test.name #__delattr__

python基礎知識(2)

1.變數和按引用傳遞 在pyhton中對變數賦值時,你其實是在建立物件的引用。2.動態引用和強型別 python中的物件引用沒有與之相關聯的型別的資訊 即python可以自動判斷所定義的型別不需要進行型別宣告 而隱式轉換只是在很明顯的情況下才會發生。可以用type 檢視變數的型別,也可以用isins...

Python基礎知識(2)

在程式語言中,注釋的作用是為了讓自己或他人更快地了解程式作者的思路和意圖,提高 的可讀性。同時在多人協同開發時,也可以提高開發效率。特備說明 注釋部分不參與 的編譯執行。單行注釋主要應用於對某個變數,等的簡短說明,不能換行,只能在一行內應用。多行注釋主要運用於大段文字的說明,可以換行使用,一般用於對...

Python的基礎知識2

python 的標準資料格式有以下5種,分別是 下面,是這5種型別的相關介紹 數字型別用於儲存數值,資料型別是不允許改變的,這就意味著如果改變量字資料型別的值,將重新分配記憶體空間 建立方式 age 10 grade 3 刪除方式,使用del關鍵字,用法為 del age 也可以連續刪除多個數字物件...