面向对象中的一些装饰器

'''# BMI指数应用实例'''
"""
成人的BMI数值:
过轻:低于18.5
正常:18.5-23.9
过重:24-27
肥胖:28-32
非常肥胖, 高于32
  体质指数(BMI)=体重(kg)/ 身高^2(m)
  EX:70kg÷(1.75×1.75)=22.86
"""
class User:
def __init__(self,height,weight):
self.height = height
self.weight = weight
def bmi(self):
return self.weight/(self.height**2)

user = User(1.83,75)
print('%2f' %user.bmi())
###这里 一个人的BMI指数本来应该是一个属性,而不是一个函数,不是一个功能
##这里我们用一个property装饰这个功能函数,就可以将其伪装成一个属性,伪装成一个变量
class User:
def __init__(self,height,weight):
self.height = height
self.weight = weight
@property
def bmi(self):
return self.weight/(self.height**2)

user = User(1.65,85)
print(user.bmi)


print('=============================================================================')

###这里我们将一个属性的增删改查统一成一个函数,
class User:
def __init__(self,name,age):
self.__name = name
self.__age = age

@property
def name(self):
return self.__name

@name.setter
def name(self,val):
if not isinstance(val,str):
print('name字段必须是str类型')
self.__name = val

@name.deleter
def name(self):
print('不能删啊 老弟!')

obj = User('jsaon',18)
print(obj.name)
obj.name = 'egon'
print(obj.name)
del obj.name

print('=============================================================================')
##或者采用下面这种写法,这种做法相对比较古老:
class User:
def __init__(self,name,age):
self.__name = name
self.__age = age


def get_name(self):
return self.__name


def change_name(self,val):
if not isinstance(val,str):
print('name字段必须是str类型')
self.__name = val

def del_name(self):
print('不能删啊 老弟!')

name = property(get_name,change_name,del_name)
#################注意这种方法必须用get change del 分别对应 查看 改变 删除
obj = User('jsaon',18)
print(obj.name)
obj.name = 'egon'
print(obj.name)
del obj.name



'''
classmethod :类方法,绑定给类使用的,使用的时候,会自动将调用该方法的类名作为第一个参数传入
绑定给对象的方法:什么装饰器也不加,就表示是给对象使用的方法,使用的时候,会自定将调用者对象作为第一个参数传入
staticmethod :静态方法,就是既不是绑定给对象使用的,也不是绑定给类使用的,调用的时候不会自动传入任何参数

具体使用如下:
'''
class User:
def __init__(self,name):
self.name = name

def func(self):
print('func')

@classmethod
def foo(cls):
print(cls)

@staticmethod
def bar(x,y):
print('bar')
obj = User('jason')
obj.func()
User.foo()
obj = User('jason')
User.bar(1,2)
obj.bar(1,2)


转载于:https://www.cnblogs.com/1832921tongjieducn/p/10957989.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境。VR技术通过模拟人的视觉、听觉、触觉等感觉官功能,使人能够沉浸在计算机生成的虚拟境界,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境,该环境的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境。VR技术通过模拟人的视觉、听觉、触觉等感觉官功能,使人能够沉浸在计算机生成的虚拟境界,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境,该环境的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值