首页 技术 正文
技术 2022年11月14日
0 收藏 433 点赞 3,565 浏览 1704 个字
  1. 判断是不是类cls的对象

    class A:
    passa = A()
    print(isinstance(a,A))
  2. 判断类sub是不是super的子类
    class A:
    passclass B(A):
    passprint(issubclass(B,A))
  3. __str__
    #调用str(obj)其实内部就是在调用__str__
    #obect内置有一个__str__,调用时,返回调用该方法的对象的内存地址class A:
    def __str__(self):
    return 'This is class A'a = A()
    print(str(a))
  4. __repr__
    #将对象转化为供解释器读取的形式class A:
    def __repr__(self):
    return str(self.__dict__)#调用%r和repr,其实都是调用__repr__()#如果类没有str方法,会调用类的repr方法,如果类没有repr,会调用父类的str方法
    #反过来如果没有repr方法,不会调用str方法,而会直接调用父类的repr
  5. __del__
    #析构方法:对象在被销毁的时候运行的函数,解释器会自动执行,一般不用实现
  6. item相关的方法
    class Person:    def __getitem__(self,key):   # 获取
    return self.__dict__[key] def __setitem__(self,key,value): #设置
    self.__dict__[key] = value def __delitem__(self,key): #删除
    self.__dict__.pop(key)p = Person()
    p['a'] = 1
    print(p['a'])
    del p['a']
    print(p['a']) #这里会报KeyError
  7. __new__
    #构造方法
    #__init__不是构造方法,而是__new__class A:
    def __new__(cls, *args, **kwargs):
    return object.__new__(A,*args, **kwargs) #调用object类的__new__方法,返回self#单例模式
    #一个类只有一个实例
    class A:
    __instance = False #是否创建了实例的标志位
    def __new__(cls, *args, **kwargs):
    if cls.__instance:
    return cls.__instance
    cls.__instance = object.__new__(A,*args, **kwargs)
    return cls.__instance
  8. __call__
    #对象后面加括号执行
    #如:对象()或类()()class A:
    def __call__(self):
    print('A')a = A()
    a()
  9. __len__
    #使用len()时执行class Life:
    def __init__(self,name,length):
    self.name = name
    self.length = length def __len__(self):
    return self.lengthhsr = Life('hsr',100)
    print(len(hsr))
  10. __hash__
    #对对象进行hash运算
    class Student:
    def __init__(self,no,name):
    self.no = no
    self.name = name def __hash__(self):
    return hash(str(self.no)+self.name)s = Student(102302,'hsr')
    print(hash(s))
  11. __eq__
    class Life:
    def __init__(self,name,length):
    self.name = name
    self.length = length def __len__(self):
    return self.length def __eq__(self, other):
    return other.length == self.lengthhsr = Life('hsr',100)
    ttt = Life('ttt',100)
    print(hsr == ttt)
  12. set依赖hash和eq方法,实现了这两个,对象就可以放入set实现去重
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,496
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,909
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,743
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,496
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,134
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,298