1 __slots__函數 限制只有定義的這些屬性才能夠動態添加python
# 限制只有定義的這些屬性才能夠動態添加 # 以元組的方式定義能給對象添加的屬性,除此以外的屬性不能添加,對動態添加屬性能夠作出一些限制 class Er(object): def __init__(self,name,age,): self.name = name self.age = age #self.weight = weight __slots__ = ('name','age') p1 = Er('張三',21) # p1.weight = 80 print(p1.name) p1.name = 'lis' print(p1.name) #張三 lis
2 類函數和靜態函數函數
# 類函數 # 裝飾器是以@ 開頭 @結構的稱之爲語法糖,裝飾器的做用就是給一些現有的函數增長一些額外功能 class Peopel(object): def __init__(self,name,age): #調用父類初始化函數 super(Peopel, self).__init__() #初始化當前類對象的一些屬性 self.name = name self.age = age @classmethod def work(cls,time,*args,**args) print(cls) #靜態函數 #@staticmethod 描述的函數成爲靜態函數,靜態函數沒有隱形參數 @staticmethod def run(time): print('跑步%s'%time) # 調用類函數能夠有類直接調用,也能夠對象調用 # 可是cls 類調用時就是該類,對象調用的時候就是該對象的類型 p1 = People('張三',23) p1.work(10) People.work(20) p1.run(5) People.run
3 利用類函數 舉例文件處理系統spa
1code
isinstance(x, A_tuple)判斷 x 類型 A_tuple 是類型 int(整數),str(字符串) # 判斷是A_tuple類型 返回True
''' # 文件處理類 # 1添加保存數據 # 1.1添加數據類型是以字符串 # 判斷數據類型是否是字符串 # 1.2 添加數據類型是列表 # 判斷數據類型是否是字符串 ''' 'a' class FileManager(object): file_num = 'student.txt' @classmethod def write_num(cls,content,split='\n'): ''' :param content: 判斷要寫入的數據 :param split: 打開文件,寫入,寫入換行符 :return: 關閉文件 ''' # isinstance(x, A_tuple)判斷 x 類型 A_tuple 是類型 int(整數),str(字符串) # 判斷是A_tuple類型 返回True if isinstance(content,str) ==True: s = open(cls.file_num,'a') s.write(content) s.write(split) s.close() else: raise TypeError('content muse be a str') # 寫入的數據是一個列表 @classmethod def writerline_num(cls,content,split='\n'): for x in content: if not isinstance(x,str): raise TypeError('content muse be a str') f = open(cls.file_num,'a') # f.writelines(content) # f.writelines(split) f.writelines(split.join(content)) f.close() FileManager.write_num('abc') FileManager.writerline_num(['a','b','c'],'*')