python 類和對象 3

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'],'*')
相關文章
相關標籤/搜索