zoukankan      html  css  js  c++  java
  • python描述符

    class Type:
        def __init__(self, key, expect_type):
            self.key = key
            self.expect_type = expect_type
    
        def __get__(self, instance, owner):
            print('执行get方法')
            return instance.__dict__[self.key]
    
        def __set__(self, instance, value):
            print('执行set方法')
            if not isinstance(value, self.expect_type):
                raise TypeError('你传入的不是',self.expect_type)
    
            instance.__dict__[self.key]=value
    
        def __delete__(self, instance):
            print('执行delete方法')
            instance.__dict__.pop(self.key)
    
    
    class People:
        name = Type('name', str)
        age = Type('age', int)
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    p = People('alex', 11)
    print(p.name)

    class Type:
    def __init__(self, key, expect_type):
    self.key = key
    self.expect_type = expect_type

    def __get__(self, instance, owner):
    print('执行get方法')
    return instance.__dict__[self.key]

    def __set__(self, instance, value):
    print('执行set方法')
    if not isinstance(value, self.expect_type):
    raise TypeError('你传入的不是',self.expect_type)

    instance.__dict__[self.key]=value

    def __delete__(self, instance):
    print('执行delete方法')
    instance.__dict__.pop(self.key)


    def deco(**kwargs): # kwargs = {'name':str, 'age': int}
    def wrapper(obj): # obj = People
    print('--->',kwargs)
    print('类名',obj)
    for key, val in kwargs.items(): # ('name',str),('age',int)

    setattr(obj, key, Type(key, val))
    return obj
    print(kwargs)
    return wrapper


    @deco(name=str, age=int) # @wrapper ==> People= wrapper(People)
    class People:
    def __init__(self, name, age):
    self.name = name
    self.age = age


    p = People('alex', 11)

    print(p.__dict__)
  • 相关阅读:
    VUE课程参考---14、v-for中key属性使用
    完全卸载oracle11g步骤
    DBCP连接池配置参数说明
    Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL
    java 数据库连接池 Oracle版
    一个非常标准的Java连接Oracle数据库的示例代码
    软件开发文档范例
    备份spfile 中的一个误区
    oracle备份恢复之rman恢复到异机
    Oracle数据库文件恢复与备份思路
  • 原文地址:https://www.cnblogs.com/majianyu/p/10248144.html
Copyright © 2011-2022 走看看