zoukankan      html  css  js  c++  java
  • 获取对象的信息

    使用type获取对象的类型,如下:

     1 class Animal(object): 
    2     def run(self): 
    3         print('Animal is running') 
    4 class Dog(Animal): 
    5     pass 
    6 print(type(Animal())) 
    7 print(type('123')) 
    8 print(type(123)) 
    9 print(type(None)) 
    

    输出如下:

    <class '__main__.Animal'>
    <class 'str'>
    <class 'int'>
    <class 'NoneType'>
    

    但是用type获取对象的类型再做比较十分不便,所以一般用isinstance()函数  

    class Animal(object):
        def run(self):
            print('Animal is running')
    class Dog(Animal):
        pass
    print(type(Animal()))
    print(type('123'))
    print(type(123))
    print(type(None))
    
    print(isinstance(Animal(),Animal))
    print(isinstance('123',str))
    print(isinstance(123,int))
    

    输出为:

    <class '__main__.Animal'>
    <class 'str'>
    <class 'int'>
    <class 'NoneType'>
    True
    True
    True
    

    还可以判断某个对象是否为列出的类型中的一种,如下:

    print(isinstance((1,2,3),(list,tuple)))
    输出:
    True
    

    使用dir()函数可以获取对象的所有属性与方法,还可以使用hasattr(对象,属性)来判断某个对象是否有某个属性,如hasattr(Animal(),'run'),还可以获取该对象的属性或者方法,如getattr(对象,属性或方法),还可以新增对象的属性,如setattr(对象,属性,设定值)  

     实例属性与类属性的区别

    之前定义类的时候在__init__函数中定义的是实例属性,如果需要定义类的属性,该属性不随实例的产生而产生,只要定义了类就都存在,类似于静态函数的概念,那么就直接在类定义时予以确定,不需要放在__init__函数中。

    实例属性的优先级高于类属性,不要让实例属性与类属性名字相同,否则实例属性的值会覆盖类属性的值。

      

      

      

  • 相关阅读:
    【转】mxGraph教程-开发入门指南
    利用IPC通道进行进程间通信(C#)
    C++引用指针 & 构造函数
    MySQL配置主主及主从备份
    MySQL 主从热备份(读写分离)
    SqlServer双机热备技术实践笔记
    c#中的弱引用:WeakReference
    px、em、rem、%、vw、vh、vm这些单位的区别
    深浅clone
    JavaScript-原始值和引用值
  • 原文地址:https://www.cnblogs.com/vonkimi/p/6937745.html
Copyright © 2011-2022 走看看