__ 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個元素,分別對應不同的內容,以供提取 元組中元素的下標 代表的含義 存放的內容 值...