關於python中類的小總結2

2021-08-25 13:29:44 字數 1885 閱讀 1394

一、特殊方法定製類,看乙個程式吧:

class roundfloatmanual(object):

def __init__(self, val):

assert isinstance(val, float),"value must be a float!"

self.value = round(val, 2)

def __str__(self):

return '%.2f' % self.value

__repr__ = __str__

>>> r = roundfloatmanual(5.568)

>>> r

5.57

加法:>>> class time60(object):

def __init__(self, hr, min):

self.hr = hr

self.min = min

def __repr__(self):

return '%d:%d' % (self.hr, self.min)

def __add__(self, other):

return self.__class__(self.hr + other.hr, self.min + other.min)

>>> a = time60(10, 30)

>>> b = time60(5, 20)

>>> a + b

15:50

原位加:

class time60(object):

def __init__(self, hr, min):

self.hr = hr

self.min = min

def __repr__(self):

return '%d:%d' % (self.hr, self.min)

def __add__(self, other):

return self.__class__(self.hr + other.hr, self.min + other.min)

def __iadd__(self, other):

self.hr += other.hr

self.min += other.min

return self

>>> a = time60(10, 30)

>>> b = time60(5, 20)

>>> a += b

>>> a

15:50

與上面一樣,當使用到「+」加好的時候,就去自動呼叫__add__方法,使用到「+=」的時候就去呼叫__iadd__()方法。

迭代器》 from random import choice

>>> class randseq(object):

def __init__(self, seq):

self.data = seq

def __iter__(self):

return self

def next(self):

return choice(self.data)

>>> for eachitem in randseq(('rock', '*****', 'scissors')):

print eachitem

scissors

rock

*****

*****

rock

*****

……二、關於單雙下劃線開頭的方法名

python 用下劃線作為變數字首和字尾指定特殊變數。

_***      不能用'from module import *'匯入

__***__ 系統定義名字

__***    類中的私有變數名

核心風格:避免用下劃線作為變數名的開始。

參考未完……

python中變數,函式,類之小總結

自己敲過之後效果更好!user bin env python coding utf 8 變數 單下劃線開頭的變數,標明是乙個受保護 protected 的變數,原則上不允許直接訪問,但外部類還是可以訪問到這個變數。class student def init self,name,age self.n...

關於cocos2d iphone小總結

1.導演通常只有乙個,因此這個物件是單例 signleton cocos2d iphone框架已經預定義了該例項,不需建立,我們直接使用就可以。2.director 物件管理場景的方法主要有以下幾個 1.主程式啟勱,顯示第乙個場景的方法 void runwithscene scene scene 2...

關於python中類知識

定義 類,方法 函式 例項 所建立的物件 類的構建,與函式構建差不多,首字母大寫,若要用到變數,使用 init self,變數 例如 class duck definit self,in name self.hidden name in name def get name self print in...