首页 > 其他 > 详细

描述符应用

时间:2021-05-11 21:56:08      阅读:38      评论:0      收藏:0      [点我收藏+]
‘‘‘描述符应用‘‘‘
# class Typed:
# def __set__(self, instance, value):
# print(‘set方法执行‘)
# print(‘instance参数%s‘ % instance)
# print(‘value参数%s‘ % value)
#
# def __get__(self, instance, owner):
# print(‘get方法执行‘)
# print(‘instance参数%s‘ % instance)
# print(‘owner参数%s‘ % owner)
#
# def __delete__(self, instance):
# print(‘delete方法执行‘)
# print(‘instance参数%s‘ % instance)
#
# class People:
# name = Typed()
# def __init__(self, name, age, salary):
# self.name = name
# self.age = age
# self.salary = salary
#
# p1 = People(‘alex‘, 18, 10000.55)
# p1.name
# p1.name = ‘lhf‘
# print(p1.__dict__)


# 类实例化所传入参数加上字符类型限制
class Typed_1:
def __init__(self, key, expected_type): # ①这里先定义一个__init__,以便作为instance实例属性字典的key值
self.key = key
self.expected_type = expected_type

def __set__(self, instance, value):
if type(value) == self.expected_type:
instance.__dict__[self.key] = value # ③这里通过self.key作为instance实例属性字典key值
else:
raise TypeError(‘输入类型错误‘)

def __get__(self, instance, owner):
return instance.__dict__[self.key]

def __delete__(self, instance):
instance.__dict__.pop(self.key)

class People_1:
name = Typed_1(‘name‘, str) # ②这里需要传入两个值给__init__
age = Typed_1(‘age‘, int)
salary = Typed_1(‘salary‘, float)
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary

p2 = People_1(‘小明‘, 18, 300.33)
# p3 = People_1(999, 18, 300.33)
# p4 = People_1(‘小红‘, ‘18‘, 300.33)
# p5 = People_1(‘小亮‘, 18, 300)

描述符应用

原文:https://www.cnblogs.com/xuewei95/p/14756749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!