• cookbook 6.1 温标的转换


    任务:

    在开氏温度(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
  • 相关阅读:
    WeakReference体验
    扩展Jquery自定义的一个错误警告控件ErrorProvider
    提高WCF的吞吐效率
    (三)资源
    替换WCF默认序列化方式
    (二)画刷
    JS字符串函数扩展
    索引
    Jquery ajax传递复杂参数给WebService
    有意义的整数正则表达式
  • 原文地址:https://www.cnblogs.com/LittleRedPoint/p/4001669.html
Copyright © 2020-2023  润新知