學習。。。python定製方法

2021-07-10 23:12:39 字數 2175 閱讀 4207

class chain(object): def __init__(self,path=''): self._path = path def __getattr__(self,path): return chain('%s/%s' % (self._path, path)) def __call__(self,path): return chain('%s/%s' % (self._path, path)) def __str__(self): return self._path __repr__ = __str__ print(chain().status.user.timeline.list)print(chain().status.user('kopite').timeline.list)

__getattr__  找不到相對於的屬性時呼叫

如:

s = chain()

print(s.name)

輸出--->/name

__call__       本身也可以作為函式

如:

s = chinai()

print(s.uers('kopite'))

-->/users/kopite

__str__         print中直接列印

__repr__       直接列印

chain().user.bin
-->/user/bin

如果乙個類想被用於for ... in迴圈,類似list或tuple那樣,就必須實現乙個__iter__()方法,該方法返回乙個迭代物件,然後,python的for迴圈就會不斷呼叫該迭代物件的__next__()方法拿到迴圈的下乙個值,直到遇到stopiteration錯誤時退出迴圈。

class fib(object):

def __init__(self):

self.a, self.b = 0, 1 # 初始化兩個計數器a,b

def __iter__(self):

return self # 例項本身就是迭代物件,故返回自己

def __next__(self):

self.a, self.b = self.b, self.a + self.b # 計算下乙個值

if self.a > 100000: # 退出迴圈的條件

raise stopiteration();

return self.a # 返回下乙個值

>>> for n in fib():

... print(n)

...112

35...46368

75025

定製該方法便可使用訪問

class fib(object):

def __getitem__(self, n):

if isinstance(n, int): # n是索引

a, b = 1, 1

for x in range(n):

a, b = b, a + b

return a

if isinstance(n, slice): # n是切片

start = n.start

stop = n.stop

if start is none:

start = 0

a, b = 1, 1

l =

for x in range(stop):

if x >= start:

a, b = b, a + b

return l

>>> f = fib()

>>> f[0]

1>>> f[1]

1

>>> f[0:5]

[1, 1, 2, 3, 5]

可實現訪問 切片也可以

但沒有對f[::2]進行處理  所以還得繼續 。。。啊

Python學習 定製序列

要想成功實現容器的定製,需要先明白協議。協議類似其他程式語言中的介面,規定了哪些方法必須要定義。關於定製容器的一些協議 像序列型別 如列表 元組 字串 或者對映型別 字典 都是屬於容器型別 如果希望定製的容器是不可變的話,只需要定義 len 和 getitem 方法 如果希望定製的容器是可變的話,除...

python定製 python中定製類

1 python中 str 和repr 如果要把乙個類的例項變成 str,就需要實現特殊方法 str classperson object def init self,name,gender self.name name self.gender genderdef str self return p...

整理Python(定製類 特殊方法)

1.str 和 repr 如果把乙個類的例項變成str,就需要實現特殊方法 str class person object def init self,name,gender self.name name self.gender gender def str self return person s...