主要內容
1. 例項的屬性和方法
2. 類的屬性和方法
3. 類的靜態屬性和方法
4. 類的私有屬性和方法
5. 運算子過載
使用樣例
import
time
class user:
# 類屬性userid,和例項屬性self.userid是兩個不同範圍的變數
userid =
'wang'
# 構造方法:
# 1.self指代當前類的例項,且位於__init__第乙個引數,其他引數作為構造引數
# 2.self是一種規範,也可用其他合法變數名
def __init__(self, userid, password):
self.userid = userid
# 私有屬性
self.__password = password
# 訪問私有方法
self.__test(
) print(
'訪問類屬性:', self.usertotal)
# 訪問類屬性: -11
# 用過類名修改類屬性
user.usertotal += 1
# 以下建立例項變數usertotal,與類變數同名,區別:
# 1.這是兩個不同範圍的變數
# 2.這裡讀取同名類變數usertotal為self.usertotal初始化,相當於:self.usertotal = user.usertotal + 1
# 3.並不會修改 user.usertotal的值
self.usertotal += 100
# 用類名訪問靜態方法
print(
'構造方法:', user.getdate(
))# 構造方法: 2020-05-27
# 例項的方法
def info(self):
print(self.userid, self.__password)
# 類屬性
usertotal = -11
# 類方法:
# 1.使用修飾器 @ classmethod標識
# 2.在類外通過物件名呼叫,又可通過類名呼叫
# 3.不能訪問例項屬性,可以訪問類屬性
@classmethod
def printusertotal(cls):
print(cls.usertotal)
# 靜態方法:
# 1.用@staticmethod標識
# 2.與類沒有直接關係,相當於普通函式
# 3.沒有self引數,無法訪問類的例項屬性
# 4.沒有cls引數,無法訪問cls的屬性
# 5.只能使用通過類名呼叫
@staticmethod
def getdate(
): print(
'靜態方法:', user.usertotal)
dd= time.localtime(
) dstr = time.strftime(
"%y-%m-%d", dd)
return dstr
# 私有屬性和方法:
# 1.雙下劃線開頭的屬性是私有屬性
# 2.雙下劃線開頭的方法是私有方法
# 3.只能在類內部使用
def __test(self):
print(self.userid, self.__password)
# 把乙個類的例項變成 str,需要實現方法__str__()
def __str__(self):
return
'user類:' + str(self.usertotal) + '\t' + str(self.userid) + '\t' + str(self.__password)
# 運算子過載,用於比較物件
# 過載的還有很多用法:"==":___e__, ">=":__ge__, ">":__gt__, "<=":__le__, "<":__lt__
def __eq__(self, other):
print(
'other:', other.__password)
return self.userid == other.userid and self.__password == other.__password
# return self.userid is other.userid and self.__password is other.__password
def usertest(
): # 例項化乙個類
user = user(
'zhang', '123456'
) user.info(
) user.printusertotal(
) print(
'類變數usertotal:', user.usertotal)
# 類變數usertotal: 1
print(
'例項變數usertotal:', user.usertotal)
# 例項變數usertotal: 101
print(user.getdate(
))# 2020-05-27
print(user.userid)
# zhang
print(user.userid)
# wang
print(user)
# user類:90 zhang 123456
other = user(
'zhang', '1234567'
) print(user == other)
if __name__ ==
'__main__'
: usertest(
)
Python類的定義 方法和屬性使用
類用來描述具有相同的屬性和方法的物件的集合。對於在類中定義的函式,稱為方法。類變數不直接叫做類變數,稱為屬性。1 類的定義 例子 class user pass說明 1 定義了乙個類名為user的類 2 類名一般約定用大寫字母開頭,函式則用小寫字母開頭,以做區分 3 用pass表示為空類,暫時還沒準...
Python類的屬性與方法
1 類的私有屬性和方法 private attrs 兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時self.private attrs。private method 兩個下劃線開頭,宣告該方法為私有方法,不能在類地外部呼叫。在類的內部呼叫self.priva...
Python 類的屬性和方法
定義乙個類 class a object 類屬性 例項屬性 類方法 例項方法 靜態方法 類屬性,直接在類中定義的屬性是類屬性 類屬性可以通過類或類的例項訪問到 但是類屬性只能通過類物件來修改,無法通過例項物件修改 count 0 def init self 例項屬性,通過例項物件新增的屬性屬於例項屬...