曲曲的秘密学术基地

纯化欲望、坚持严肃性

欢迎!我是曲泽慧(@zququ),目前在深圳(ICBI,BCBDI,SIAT)任职助理研究员。


病毒学、免疫学及结构生物学背景,可以在 RG 上找到我已发表的论文

本站自2019年7月已访问web counter

python 魔方方法 (1) 构造与析构

整理自小甲鱼鱼C论坛

构造与析构

__init__(self[,...])

__init__()相当于其他面向对象编程语言的构造方法,也就是类在实例化成对象时,首先会调用的方法

class Rectangle:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def getArea(self):
        return self.x * self.y
>>> rect = Rectangle(3, 4)    #这里输入__init__()中需要的参数。
>>> rect.getArea()
12

需要注意,__init__()方法不能return值,只能return None.

__new__(cls[,...])

__new__()方法是对象实例化时,调用的第一个方法。他的第一个参数不self,而是类cls同时,其他参数会传入__init__()

__new__()需要返回一个实例对象,通常是cls这个类实例化的对象,当然也可以返回其他对象。

通常在继承一个不可变的类型的时候,需要使用__new__()方法。如下代码:

class CapStr(str):
    def __new__(cls, string):
        string = string.upper()
        return str.__new__(cls, string)
>>> a = Capstr('abc')
>>> a
'ABC'

__del__(self)

__del__()方法只有在垃圾回收机制激活时才能调用,即对应数据完全删除以后。

class DelPrint():
    def __del__(self):
        print('__delf__()方法被调用')

>>> A = DelPrint()
>>> B = A
>>> C = B
>>> del B
>>> del C
>>> del A
__delf__()方法被调用

练习:

(1) 写一个FileObject类,给文件对象进行包装,从而确认在删除对象时文件能自动关闭。

class FileObject:
    def __init__(self, FILE='example.txt'):
        self.FILE = open(FILE, 'r')
    del __del__(self):
        self.FILE.close()
        del self.FILE

(2) 定义一个摄氏度到华氏度转换(华氏度 = 摄氏度*1.8 + 32)。

class C2F(float):
    def __new__(cls, C = 0.0):
        return float.__new__(cls, C * 1.8 + 32)

(3) 定一个一个类继承int类型,当传入参数是字符串时候,返回该字符串所有字符的ASCII码的和(ord())

class TOASCII(int):
    def __new__(cls, INPUT = ''):
        if isinstance(INPUT, str):
            total = 0
            for each in INPUT:
                total += ord(each)
                INPUT = total  #最后要赋值回INPUT
        return int.__new__(cls, INPUT)

>>> print(TOASCII('A'))
Last One

汇编语言 8.6 寻址方式的综合应用

8.6 寻址方式的综合应用按照王爽教材里给的例子: 公司名称 DEC 总裁姓名 Ken Olsen 排名 137 收入 40 著名产品 PDP 以上是DEC公司1982年的情况,到了1988年DEC公司的信息放生了变化,如下: 公司名称 DEC 总裁...…

汇编语言More
Next One

汇编语言 8.4 8.5 寻址方式(2) 指令要处理的数据多长

8.4 寻址方式(2)寻址方式的小结表格: 寻址方式 含义 名称 常用格式举例 [idata] EA=idata;SA=(ds) 直接寻址 [idata] [bx] EA=(bx);SA=(ds) 寄存器间接寻址 [bx] [si] EA=(bx);SA=(ds)   ...…

汇编语言More