第十六天学习python

魔法方法
下面制作一个关于程序运行时间的代码

import  time as t

class MyTimer():
    def start(self):
        self.start=t.localtime()
        print("计时开始")
    def stop(self):
        self.stop=t.localtime()
        self._calc()
        print("计时结束")
    def _calc(self):
        self.lasted=[]
        self.prompt="总共运行了"
        for index in range(6):
            self.lasted.append(self.stop[index]-self.start[index])
            self.prompt += str(self.lasted[index])

        print(self.prompt)
t1=MyTimer()
t1.start()
t1.stop()

输出为
计时开始
总共运行了00000000
计时结束

上述代码使用start stop 方法进行输出

下面介绍描述符

描述符就是将某种特殊类型的类的实例指派给另一个类的属性


class MyProperty:
    def __init__(self,fget=None,fset=None,fdel=None):
        self.fget=fget
        self.fset=fset
        self.fdel=fdel
    def __get__(self, instance, owner):
        return self.fget(instance)
    def __set__(self, instance, value):
        self.fset(instance,value)
    def __del__(self,instance):
        self.fdel(instance)
class  c:
    def __init__(self):
        self.x=None
    def getx(self):
        return self._x
    def setx(self,value):
        self._x=value
    def delx(self):
        del self._x

    x=MyProperty(getx,setx,delx)
q=c()
q.x="x-man"
q.x
q._x

下面代码测试摄氏温度转换

class Celsius:
    def __init__(self,value=26.0):
        self.value=float(value)
    def __get__(self, instance, owner):
        return self.value
    def __set__(self, instance, value):
        self.value=float(value)
class Fahrenheit:
    def __get__(self, instance, owner):
        return instance.cel*1.8+32
    def __set__(self, instance, value):
        instance.cel=(float(value)-32)/1.8
class Tempeature:
    cel=Celsius()
    fgh=Fahrenheit()
temp=Tempeature()
print(temp.cel)
print(temp.fgh)

输出为
26.0
78.80000000000001

上述代码 将一个类的实例赋给另一个类,然后再进行输出
以上皆是
描述符就是将某种特殊类型的类的实例指派给另一个类的属性的使用

猜你喜欢

转载自blog.csdn.net/qq_40594554/article/details/81609869