1. 判断是不是类cls的对象

    class A:
    pass a = A()
    print(isinstance(a,A))
  2. 判断类sub是不是super的子类
    class A:
    pass class B(A):
    pass print(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.length hsr = 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.length hsr = Life('hsr',100)
    ttt = Life('ttt',100)
    print(hsr == ttt)
  12. set依赖hash和eq方法,实现了这两个,对象就可以放入set实现去重

python 面向对象 类的内置方法的更多相关文章

  1. python面向对象--类的内置方法

    #isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...

  2. python面向对象 : 反射和内置方法

    一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类  (注:type(对象名) is 类名 : 判断对象所属 ...

  3. Python面向对象编程及内置方法

    在程序开发中,要设计一个类,通常需要满足以下三个要求: [1]类名 这类事物的名字,满足大驼峰命名法 [2]属性 这类事物具有什么样的特征 [3]方法 这类事物具有什么样的行为 定义简单的类: 定义只 ...

  4. python 面向对象反射以及内置方法

    一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(objec ...

  5. python面向对象--类的内置函数

    #isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...

  6. day28 面向对象:反射,内置函数,类的内置方法

    面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...

  7. python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法

    一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...

  8. python基础语法18 类的内置方法(魔法方法),单例模式

    类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__ini ...

  9. python -- 类中--内置方法

    isinstance 和  issubclass isinstance(obj,b)  检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...

随机推荐

  1. javaSE常用的英语单词

    1.continut 使......继续 2.break 打破 3.switch 开关:转换:鞭子 4.case 实例:情况:箱 5.Object 目标:物体 6.Class 阶级:班级:种类 7.p ...

  2. centos 如何执行.bin 文件??

    默认下载,或者上传到 linux 上的 .bin 文件都是白色的,不能被执行. 想要用 ./ 命令去执行,需要先给这个 bin 文件赋权限 chmod u+x 文件名(全名称) 执行完成这个命令,可以 ...

  3. tp3.1 白板不报错

    今天有碰上了这种情况, 一般记忆力好把刚才改动的地方恢复一下就好了,但是今天特殊原因编辑器不小心关了,也不知道把那里改坏了,一通乱找,也找不到.汗! 没办法,提交代码几面,用git看下改变的地方,是c ...

  4. Activiti 各个节点涉及的表

    ################################# 部署流程定义涉及到的表 # 流程部署表SELECT * FROM `act_re_deployment` # 流程定义表SELECT ...

  5. JavaScript原生值与JSON的转换

    ---------------------------------- ---------------------------- stringify方法的另外两种参数: ---------------- ...

  6. Jdk和Cglib 的区别

    一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的代理类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...

  7. telnet允许root用户登录

    默认情况下,linux不允许root用户以telnet方式登录linux主机,若要允许root用户登录,可采取以下3种方法之一:    1.修改login文件 redhat中对于远程登录的限制体现在/ ...

  8. C#-WinForm中文本框的中文乱码问题

    上面这句话可以解决textbox中的中文乱码问题   来自为知笔记(Wiz) 附件列表 QQ图片20151218124007.png

  9. stylesheet_link_tag,javascript_include_tag无效?

    stylesheet_link_tag,javascript_include_tag无效? http://stackoverflow.com/questions/28241981/rails-4-ex ...

  10. 【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放具体解释

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说,主要通过MFC单文档视图实现显示BMP图片空间几何变换.包含图像平移.图形 ...