python基礎 python中常見魔法方法

2021-10-04 20:48:25 字數 4735 閱讀 1935

__ new __ 、__ init __ 、 __ str __

class

person

(object):

def__new__

(cls,

*args,

**kwargs)

:"""

申請記憶體空間

"""return

object

.__new__(cls)

def__init__

(self, name, age)

:"""

將資料填充到申請好的那一段記憶體空間

:param name: 姓名

:param age: 年齡

"""self.name = name

self.age = age

def__eq__

(self, other)

:"""

當使用 == 運算子的時候,會呼叫這個函式

:param other: 被比較的另乙個物件

:return: 如果姓名和年齡都相同,返回true;否則返回false

"""return self.name == other.name and self.age == other.age

# def __ne__(self, other): 當使用!= 運算子的時候,會呼叫這個函式

def__gt__

(self, other)

:"""

當使用 > 或者 < 運算子的時候,會自動呼叫這個函式

:param other: 被比較的另乙個物件

:return: 如果年齡大於被比較的值,返回true;否則返回false

"""return self.age > other.age

# def __lt__(self, other): 當使用 < 或者 > 運算子的時候,會呼叫這個函式

def__ge__

(self, other)

:"""

當使用 >= 或者 <= 運算子的時候,會呼叫這個函式

:param other: 被比較的另乙個物件

:return:

"""return self.age >= other.age

# def __le__(self, other): 當使用 >= 或者 <= 運算子的時候,會呼叫這個函式

# def __int__(self):

# return self.age

## def __float__(self):

# return self.age

## def __bool__(self):

# return true

def__str__

(self)

:"""

當需要把乙個物件轉換成為字串的時候,會自動呼叫這個方法

:return: 轉換成為字串以後的結果

"""return

"姓名={},年齡={}"

.format

(self.name, self.age)

def__repr__

(self)

:"""

類似於 __str__ 方法

"""return

'hehe'

def__add__

(self, other)

:"""

當使用 + 運算時,會呼叫這個方法

:param other:

:return:

"""return self.age + other.age

# def __sub__(self, other):

# def __mul__(self, other):

# def __truediv__(self, other):

# def __floordiv__(self, other):

def__del__

(self)

:"""

當刪除物件時,會呼叫這個方法

:return:

"""del self

def__call__

(self,

*args,

**kwargs)

:"""

當把乙個例項物件當做函式一樣直接呼叫時,會觸發本方法

:param args:

:param kwargs:

:return:

"""print

('我被呼叫了'

)print

(args)

print

(kwargs)

def__getitem__

(self, item)

:# print('item = {}'.format(item))

return self.__dict__[item]

def__setitem__

(self, key, value)

:# print('ke = {},value = {}'.format(key, value))

self.__dict__[key]

= value

deftest()

:print

('hehe'

)p1 = person(

'zhangsan',18

)p2 = person(

'lisi',20

)print

(p1 > p2)

print

(p1 < p2)

test(

)p1(1,

2, x=

100, y=9)

# 把乙個物件當做乙個函式直接呼叫,會觸發物件的__call__方法

# 把物件的屬性名和屬性值組成了乙個字典

print

(p1.__dict__)

# print

(p1[

'name'])

# 當把乙個物件物件當做字典來取值的時候,會自動呼叫 __getitem__方法

p1['age']=

29# 當把乙個物件當做字典來賦值的時候,會自動呼叫 __setitem__ 方法

print

(p1.age)

# student =

# print(student['name'])

# x = 'name'

# print(student[x])

當想把物件當作字典來使用時,設定setitemgetitem方法

class

person

(object):

def__init__

(self, name, age)

: self.name = name

self.age = age

def__getitem__

(self, item)

:print

('item = {}'

.format

(item)

)return self.__dict__[item]

def__setitem__

(self, key, value)

: self.__dict__[key]

= value

p = person(

'jerry',18

)# print(p.__dict__)

print

(p['name'])

# 會自動呼叫 __getitem__ 方法

p['name']=

'zhangsan'

print

(p.name)

# print(p.***)

m ='age'

p.m =

10p.addr =

'上海'

p.__dict__[m]=10

# student =

# print(student['name'])

# x = 'name'

# print(student[x])

物件的切片 設定__getslice__方法

# -*- coding:utf-8 -*-

class

person

(object):

def__init__

(self, name, age, hobbies)

: self.name = name

self.age = age

self.hobbies = hobbies

def__getslice__

(self, start, end)

:return self.hobbies[start:end]

p = person(

'jerry',18

,['抽菸'

,'喝酒'

,'燙頭'

,'賞菊'

,'蹦迪'

,'唱'

,'跳'

,'籃球'

,'rap'])

print

(p[2:5

])# python2之前會自動呼叫 __getslice__方法

s ='hellogoodyesnohihowareyoufinethankyou'

print

(s[3:5

])

python中基礎函式

strip函式 乙個初學者的最喜歡的函式,它的作用就是去掉 n 檔案的開啟分為兩種 一種是 withopen r as 另一種是 z open chr 97 a ord a 97 cmp 5,6 1 cmp 6,5 1 cmp 6,6 0 chr i for i in range 97,123 a ...

python基礎 python中的集合容器

list是python的乙個內建物件 1 list的特點 1 list列表是有序的,指的是新增順序和儲存順序是一致的,即先進先出,後進後出 2 list列表內的元素是可以重複的 3 list列表新增和刪除的速度比較慢 4 list列表的查詢速度比較快 5 list列表的第乙個元素的索引是從0開始的 ...

python學習基礎 python中的時間編碼

需要匯入時間模組 import time time.time print ts timetup time.localtime ts print timetup 返回乙個時間元組,ts是乙個時間戳 這是乙個元組,裡面有9個元素,分別對應不同的內容,以供提取 元組中元素的下標 代表的含義 存放的內容 值...