任务:

在开氏温度(Kelvin)、摄氏度(Celsius)、华氏温度(Fahrenheit)、兰金温度(Rankine)之间做转换

解决方案:

#coding=utf-8
class Temperature(object):
coefficients={'c':(1.0,0.0,-273.15),'f':(1.8,-273.15,32.0),'r':(1.8,0.0,0.0)} def __init__(self,**kwargs):
try:
name,value = kwargs.popitem()
except KeyError:
name,value = 'k',0
if kwargs or name not in 'kcfr':
kwargs[name] = value
raise TypeError,'invalid arguments %r' % kwargs
setattr(self,name,float(value)) def __getattr__(self,name):
try:
eq = self.coefficients[name]
except KeyError:
raise AttributeError,name
return (self.k + eq[1]) + eq[0] + eq[2]
def __setattr__(self,name,value):
if name in self.coefficients:
eq = self.coefficients[name]
self.k = (value - eq[2]) / eq[0] - eq[1]
elif name == 'k':
object.__setattr__(self,name,value)
else:
raise AttributeError,name
def __str__(self):
return "%s K" % self.k
def __repr__(self):
return "Temperature(k=%r)" % self.k #测试
te = Temperature(f=70)
print te.c

最新文章

  1. sqlserver数据库标注为可疑的解决办法(转)
  2. oracle从零开始学习笔记 二
  3. Spring学习8-Spring事务管理(注解式声明事务管理)
  4. 数据持久层(三)ODB介绍
  5. JMeter学习资料
  6. 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)
  7. OC中文件的操作
  8. float存储方式编程验证
  9. WebSocket刨根问底(二)
  10. Vs2017 typescript 开发小问题
  11. freemarker demo
  12. Android IPC机制(三)使用AIDL实现跨进程方法调用
  13. Python 中if __name__ == '__main__': 的作用和原理
  14. mac新手使用
  15. HTML-XMLHttpRequest
  16. json字符串转换对象的方法1
  17. tail -f 实时查看日志文件 linux查看日志后100行
  18. rnn-nlp-单词预测
  19. HTML学习-2标记标签-1
  20. Socket通讯-Netty框架实现Java通讯

热门文章

  1. Hyperledger Fabric-sdk-java
  2. MySQL中导入Excel表格中的数据
  3. 进阶Java编程(10)反射与简单Java类
  4. .Net Core 3.0 内置依赖注入:举例
  5. 【大数据】初识Hadoop
  6. Python学习记录1-基础知识
  7. 工控安全入门之 Ethernet/IP
  8. C语言特殊函数的应用
  9. ISO/IEC 15444-12 MP4 封装格式标准摘录 5
  10. Delphi用QJSON解析JSON格式的数据 【转】