曲曲的秘密学术基地

纯化欲望、坚持严肃性

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


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

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

python 类和对象 (5) 一些相关的BIF

整理自小甲鱼鱼C论坛

对类或者对象从属判断的内置函数

issubclass(class, classinfo)

如果第一个参数(class)是第二个参数(classinfo)的一个子类,返回True否则返回False

  1. 一个类被认为是其自身的子类
  2. classinfo可以是一个类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True
  3. 其他情况会抛出TypeError

isinstance(object, classinfo)

如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回True,否则返回False。

  1. 如果object是classinfo 的子类的一个实例,也符合条件
  2. 如果第一个参数不是对象,则永远返回False
  3. classinfo可以是类对象组成的元组,只要object是其中任何一个候选类的子类,则返回True
  4. 如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常

用于访问对象的属性

hasattr(object, name)

attr即attribute的缩写,属性的意思。hasattr()函数的作用就是测试一个对象里是否有指定的属性。

第一个object是对象,第二个name是属性名。

getattr(object, name[, default])

返回对象指定的属性值,如果指定的属性不存在,则返回default的值;若没有设置default参数,抛出AttributeError。 注意属性要用字符串的形式给出

setattr(object, name, value)

与getattr()对应,setattr()可以设置对象中指定属性的值,如果指定的属性不存在,则会新建属性并赋值。 注意属性要用字符串的形式给出

delattr(object, name)

与setattr()相反,delattr()用于删除对象中指定的属性如果属性不存在,则抛出AttributeError。 注意属性要用字符串的形式给出

property(fget=None, fset=None, fdel=None, doc=None)

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 = property(getx, setx, delx, "I'm the 'x' property")

这样做可以避免大范围对代码中的变量getx, setx, delx进行修改,直接操作x的属性即可。

另外property()也可以用来使用属性修饰符创建描述符:

class C:
    def __init__(self):
        self._x = None
    
    @property 
    del x(self):
        # I'm the 'x' property
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

注意:三个处理_x属性的方法名要相同(参数不同)

Last One

汇编语言 第七章总结 实验6 Debug跟踪问题7.9

问题7.9编程,将datasg段中每个单词的前4个字母改为大写字母。assume cs:codesg, ss:stacksg, ds:datasgstacksg segment dw 0,0,0,0,0,0,0,0stacksg endsdatasg segment db '1. display ' db '2. brows ' db '3. replace ' db '4. modify 'datasg endscodesg seg...…

汇编语言More
Next One

python 类和对象 (4) 组合 Mixin 类,类对象与实例对象 绑定

整理自小甲鱼鱼C论坛组合所谓”组合”,可以理解为相对于继承来讲的一个概念。有些时候,利用多重继承本身除了存在风险的同时,在有些时候,如果类本身并不存在明显的相互继承关系,强行继承会很别扭。比如定义了两个类,小鸟和老鹰后,我们想定义一个新的类,天空,天空中包含小鸟和老鹰,奈何天空和小鸟和老鹰本身并不存在继承关系,这时就适合用组合来解决这个问题。当执行组合时,我们将需要的类放进目的类中进行实例化,就可以实现组合,例如代码:class Bird(): def __init__(self, ...…

pythonMore