7_28 装饰器 9+21+20 需要重新写一次

Posted yikedashuyikexiaocao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7_28 装饰器 9+21+20 需要重新写一次相关的知识,希望对你有一定的参考价值。

v

class Typed:
def __init__(self,key,expected_type):
self.key=key
self.expected_type=expected_type
def __get__(self, instance, owner):
print(‘get方法‘)
# print(‘instance参数【%s】‘ %instance)
# print(‘owner参数【%s】‘ %owner)
return instance.__dict__[self.key]
def __set__(self, instance, value):
print(‘set方法‘)
# print(‘instance参数【%s】‘ % instance)
# print(‘value参数【%s】‘ % value)
# print(‘====>‘,self)
if not isinstance(value,self.expected_type):
# print(‘你传入的类型不是字符串,错误‘)
# return
raise TypeError(‘%s 传入的类型不是%s‘ %(self.key,self.expected_type))
instance.__dict__[self.key]=value
def __delete__(self, instance):
print(‘delete方法‘)
# print(‘instance参数【%s】‘ % instance)
instance.__dict__.pop(self.key)

class People:
name=Typed(‘name‘,str) #t1.__set__() self.__set__()
age=Typed(‘age‘,int) #t1.__set__() self.__set__()
def __init__(self,name,age,salary):
self.name=name
self.age=age
self.salary=salary

# p1=People(‘alex‘,‘13‘,13.3)
p1=People(213,13,13.3)

# p1=People(‘alex‘,13,13.3)
# print(p1.__dict__)
# p1=People(213,13,13.3)
# print(p1.__dict__)
# print(p1.__dict__)
# print(p1.name)

# print(p1.__dict__)
# p1.name=‘egon‘
# print(p1.__dict__)


# print(p1.__dict__)
# del p1.name
# print(p1.__dict__)

# print(p1)

# print(p1.name)
# p1.name=‘egon‘
# print(p1.name)
# print(p1.__dict__)































































以上是关于7_28 装饰器 9+21+20 需要重新写一次的主要内容,如果未能解决你的问题,请参考以下文章

2018年9月28日函数part4多个装饰器和迭代器

Python-21_装饰器-02_装饰器实现

python functools.wraps装饰器模块

特殊方法和装饰器

装饰器、装饰器类与类装饰器(三)

装饰器前奏(2017年8月20日 21:10:27)