python 类和对象 3

1 __slots__函数 限制只有定义的这些属性才可以动态添加

# 限制只有定义的这些属性才可以动态添加
# 以元组的方式定义能给对象添加的属性,除此之外的属性不能添加,对动态添加属性可以做出一些限制

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 利用类函数 举例文件处理系统

        1

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'],'*')

 

转载于:https://my.oschina.net/u/3771014/blog/1617039

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值