精华内容
下载资源
问答
  • 1、判断一个类为另一个类的子类 issubclass(class,classinfo)判断第一个参数是否为第二参数的子类 注意:1、这是不严格判断,因为一个类被认为是自身的子类  2、classinfo 可以是类对象组成的元组,只要class是...

    1、判断一个类为另一个类的子类

    issubclass(class,classinfo)判断第一个参数是否为第二参数的子类

    注意:1、这是不严格判断,因为一个类被认为是自身的子类

       2、classinfo 可以是类对象组成的元组,只要class是其中任何一个候选的子类则返回Ture

       3、在其他情况下抛出TypeError的错误

    class A:
        def __init__(self):
            print('我是A类')
    
    
    class B(A):
        def __init__(self):
            print('我是B类继承A')
    
    
    
    class C(B):
        def __init__(self):
            print('我是C类继承B')
    
    >>> issubclass(C,A)
    True
    >>> issubclass(C,B)
    True
    >>> issubclass(A,A)
    True
    >>> issubclass(A,object)#所有类的父类都是object
    True
    >>> issubclass(A,C)
    False
    >>> issubclass(C,(A,B))
    True
    >>> 

    2、判断一个对象是否属于该类

    isinstance(object,classinfo)

    注意:1、如果第一个参数不是对象则永远返回False

       2、如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError的异常

    class A:
        def __init__(self):
            print('我是A类')
    
    
    class B(A):
        def __init__(self):
            print('我是B类继承A')
    
    
    
    class C:
        def __init__(self):
            print('我是C类')
    >>> a=A() 我是A类
    >>> isinstance(a,A) True >>> isinstance(a,(C,A)) True >>> isinstance(B,(C,A)) False >>> isinstance(B,a) Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> isinstance(B,a) TypeError: isinstance() arg 2 must be a type or tuple of types

    3、判断对象是否存在某种属性

    hasattr(object,name)

    注意:name要用单引号‘’括起来

    class A:
        size=10
        def __init__(self):
            print('我是A类')
    
    
    >>> hasattr(A,'size')
    True

    4、获取对象的属性

    getattr(object,name,default)

    注意:当对象无该属性时如果default没赋值则会报错,如果赋值则返回default的值

    class A:
        size=10
        def __init__(self):
            print('我是A类')
    >>> getattr(A,'lenth','不存在该属性')
    '不存在该属性'

     

    5、新建对象属性和删除属性的方法

    新建

    1、直接对象.属性 新建属性

    2.setattr(object,name,value)#name加单引号

    删除

    delattr(类对象,name)

    对类对象的属性的删除会影响到由该类所产生的实例对象,而不能用delattr(实例对象,name)来删除属性

    class A:
        size=10
        def __init__(self):
            print('我是A类')
    
    >>> a=A()
    我是A类
    >>> a.size
    10
    >>> a.y=1
    >>> a.y
    1
    >>> a.size
    10
    >>> A.y
    Traceback (most recent call last):
      File "<pyshell#82>", line 1, in <module>
        A.y
    AttributeError: type object 'A' has no attribute 'y'
    >>> A.U=0
    >>> a.U
    0
    >>> delattr(A,'U')
    >>> a.U
    Traceback (most recent call last):
      File "<pyshell#88>", line 1, in <module>
        a.U
    AttributeError: 'A' object has no attribute 'U'

    6、property

    引用小甲鱼:http://bbs.fishc.com/thread-51106-1-1.html

    class C:
        def __init__(self, size=10):
            self.size = size
    
        def getXSize(self):
            return self.size
    
        def setXSize(self, value):
            self.size = value
    
        def delXSize(self):
            del self.size
    
            x.property(getXSize,setXSize,delXSize)
    
    >>> c.x
    10
    >>> c.x = 12
    >>> c.x
    12
    #使用函数修饰符
    class C:
        def __init__(self, size=10):
            self.size = size
            
        @property
        def x(self):
            return self.size
    
        @x.setter
        def x(self, value):
            self.size = value
    
        @x.deleter
        def x(self):
            del self.size

    7、函数修饰符

    http://bbs.fishc.com/thread-51109-1-1.html

     

    转载于:https://www.cnblogs.com/PythonFCG/p/8424466.html

    展开全文
  • 给定一个类的对象a,要求获取该对象的父类。 方法: a.__class__.__bases__ 返回由该对象的父类组成的元组,例如: >>> class Base(object): ... pass ... >>> class Derived(Base): ... ...

    参考

    Get parent class name?

    Python 获取类对象的父类

    给定一个类的对象a,要求获取该对象的父类。

    方法:

    a.__class__.__bases__

    返回由该对象的父类组成的元组,例如:

    >>> class Base(object):
    ...     pass
    ...
    >>> class Derived(Base):
    ...     def print_base(self):
    ...         for base in self.__class__.__bases__:
    ...             print base.__name__
    ...
    >>> foo = Derived()
    >>> foo.print_base()
    Base

    2019.1

    转载于:https://www.cnblogs.com/qq952693358/p/10333282.html

    展开全文
  • 一些相关BIF issubclass(class,classinfo) ...print(issubclass(b,a))#若b为a子类,则返回为true,否则返回为false print(issubclass(a,b)) 输出为 True False isinstant(object,classinfo)...

    一些相关的BIF
    issubclass(class,classinfo)

    class a:
        pass
    class b(a):#b继承于a
        pass
    print(issubclass(b,a))#若b为a的子类,则返回为true,否则返回为false
    print(issubclass(a,b))
    
    输出为
    True
    False
    

    isinstant(object,classinfo)

    class a:
        pass
    class b(a):#b继承于a
        pass
    b1=b()#把b实例化对象为b1
    print(isinstance(b1,b))#若b1为b的实例化对象,则返回为true
    print(isinstance(b1,a))
    
    输出为
    True
    True#因为这里b继承于a,所以b1也是a的实例化对象
    

    hasattr(object,name)

    class c:
        def __init__(self,x=0):
            self.x=x
    c1=c()
    print(hasattr(c1,'x'))#若c1中有x这个属性,则返回为true
    #注意这里的x需要加上单引号或者双引号,不然会报nameerror
    

    getattr(object,name[,default])

    class c:
        def __init__(self,x=0):
            self.x=x
    c1=c()
    print(hasattr(c1,'x'))
    print(getattr(c1,'x'))#若c1中有x这个属性,则返回为x的默认值,否则会报错
    print(getattr(c1,'y','不存在'))#若c1中有y这个属性,则返回为y的默认值,否则返回【不存在】这个字符串
    
    输出为
    True
    0
    不存在
    

    setattr(object,name,value)

    class c:
        def __init__(self,x=0):
            self.x=x
    c1=c()
    print(hasattr(c1,'x'))
    print(getattr(c1,'x'))
    print(getattr(c1,'y','不存在'))
    setattr(c1,'y','haha')#若c1中没有y这个属性,则将后面的haha赋值给y
    print(getattr(c1,'y','不存在'))
    
    输出为
    True
    0
    不存在
    haha
    

    delatter(object,name)

    
    class c:
        def __init__(self,x=0):
            self.x=x
    c1=c()
    print(hasattr(c1,'x'))
    print(getattr(c1,'x'))
    print(getattr(c1,'y','不存在'))
    setattr(c1,'y','haha')
    print(getattr(c1,'y','不存在'))
    delattr(c1,'y')#若c1中存在y这个属性,则将之删除,若不存在,则报错
    print(getattr(c1,'y','不存在'))
    输出为
    True
    0
    不存在
    haha
    不存在
    
    展开全文
  • python中比较常用的类的信息有以下几种, 下面我们来使用一下, class Animal: def __init__(self, age): self.age = age class Cat(Animal): pass print(Cat.__name__, type(Cat.__name__)) # 注意此处...

    1.类的信息

    在python中比较常用的类的信息有以下几种,
    在这里插入图片描述
    下面我们来使用一下,

    class Animal:
        def __init__(self, age):
            self.age = age
    
    
    class Cat(Animal):
        pass
    
    
    print(Cat.__name__, type(Cat.__name__))  # 注意此处返回的是字符串类型
    print(Cat.__dict__)  # 返回类的信息
    print(Cat.__bases__)  # 返回该类的父类
    print(Cat.__module__)  # 返回类所在的模块
    print(Cat.__mro__)  # 返回类的继承顺序

    执行结果如下,

    Cat <class 'str'>
    {'__module__': '__main__', '__doc__': None}
    (<class '__main__.Animal'>,)
    __main__
    (<class '__main__.Cat'>, <class '__main__.Animal'>, <class 'object'>)

    2.对象的信息

    下面我们以举例的方式来讲解一下对象的常见信息,

    class Animal:
        def __init__(self, age):
            self.age = age
    
    
    class Cat(Animal):
        pass
    
    
    c1 = Cat(5)
    print(dir(c1))  # 返回对象的信息
    print(c1.__dict__)  # 返回对象属性字典
    print(c1.__module__)  # 返回对象的模块名
    print(c1.__class__)  # 返回对象所属类的类名的类名,注意返回的不是类名字符串

    执行结果如下,

    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age']
    {'age': 5}
    __main__
    <class '__main__.Cat'>

    3.常见类函数

    在python中比较常用的类函数有以下几种,
    在这里插入图片描述
    下面我们来使用一些,

    class Animal:
        def __init__(self, age):
            self.age = age
    
    
    class Cat(Animal):
        pass
    
    
    c1 = Cat(5)
    print(issubclass(Cat, Animal))  # 判断第一个参数是不是第二个参数的子类,是返回True,不是返回False
    print(isinstance(c1, Cat))  # 判断类型,可以判断对象是否属于类
    print(hasattr(c1, "age"))  # 判断对象(第一个参数)是否有该属性(第二个参数),注意属性需要是字符串类型
    print(getattr(c1, "age"))  # 输出对象的属性值
    print(callable(c1))  # 判断一个对象是否可以被调用

    执行结果如下,

    True
    True
    True
    5
    False

    我们可以给类添加__call__魔术方法,使对象可以被调用,

    class Animal:
        def __init__(self, age):
            self.age = age
    
    
    class Cat(Animal):
        def __call__(self, *args, **kwargs):
            pass
    
    
    print(callable(c1))

    执行结果如下,

    True

    4.异常处理

    4.1.try-except语句

    错误指的是代码有语法问题,⽆法解释运⾏,必须改正后才能运⾏。

    如果代码没有语法问题,可以运⾏,但会出运⾏时的错误,例如除零错误,下标越界等问题,这种在运⾏期间检测到的错误被称为异常,出现了异常必须处理否则程序会终⽌执⾏,⽤户体验会很差。python⽀持程序员自己处理检测到的异常。我们可以使用try-except语句进行异常的检测和处理。

    例如,

    try:
        print(1 / 0)  # 被检测的代码块
    except ZeroDivisionError as e:  # 指定可能出现的错误,我们这里指定ZeroDivisionError
        print(e)  # 如果出现上面提到的错误会执行该块代码

    执行结果如下,

    division by zero

    注意,我们可以对于出现的不同类错误可以有不同的解决代码,例如,

    try:
        print(1 / 0)
    except ZeroDivisionError as e:  # 可能出现的第二种错误
        print(e)
    except StopIteration as e:  # 可能出现的第二种错误
        print(e)

    注意,如果检测代码块出现异常,则不会继续向下执行,而是直接跳转到except语句。

    例如,

    try:
        print(1 / 0)
        print("*" * 100)
    except ZeroDivisionError as e:
        print(e)

    执行结果如下,

    division by zero

    我们可以看到print("*" * 100)该句并未被执行。

    我们还可以在try-except语句后加入else语句和finally语句。else语句是如果没有检测到异常则会执行else语句。finally语句是一定会被执行的语句,不管有没有异常。例如,

    try:
        print(1 / 1)
    except ZeroDivisionError as e:
        print(e)
    else:
        print("没有异常")
    finally:
        print("结束")

    执行结果如下,

    1.0
    没有异常
    结束

    4.2.抛出异常

    ⼿动抛出⼀个指定类型的异常,⽆论是哪种异常类都可以带⼀个字符串参数,对异常进⾏描述。

    raise不带参数会把错误原样抛出。

    try:
        raise ZeroDivisionError('除0错误')
        # raise ZeroDivisionError  #如果不想获取错误信息,可以不带参数
    except ZeroDivisionError as e:
        print(e)  #除0错误

    执行结果如下,

    0错误

    4.3.自定义异常类

    如果系统异常类型满⾜不了业务需求,那么可以⾃⼰定义异常类来处理。

    注意,⾃⼰定义的异常类必须继承BaseException或Exception。

    下面我们来定义一个异常类,

    class CustomException(Exception):  # 继承系统的异常处理类
        def __init__(self, msg):
            super().__init__()  # 调用父类的构造方法
            self.msg = msg
        
        def __str__(self):  # 重做__str__魔术方法
            return self.msg
        
        def handle(self):
            print("异常处理方法")  # 自定义异常的处理方法

    4.4.异常嵌套

    与循环、判断等语句一样,异常可以进行嵌套。

    展开全文
  • Python:对象训练题

    2021-04-30 11:30:22
    完成下列小题 ...创建方法study参数为Teacher对象,调用Teacher类的teachObj方法,接收老师教授的知识点,然后打印‘老师xxx,我终于学会了!’xxx为老师的teach方法返回的信息。 重写__str__方法,
  • 类与对象相关的内置函数 1、issubclass(class,classinfo):class是...2、classinfo可以是类对象组成的元祖,只要class与其中一个候选类的子类,则返回True. 其他情况会跑出TypeError >>> class A: pass >>>
  • 笔记 issubclass(class,classinfo) 检测class是否为classinfo的子类,...2.classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,就返回True。 注:object是任何类的父类 isinstance(obj...
  • 函数 1.issubclass(class1,class2) 如果class1是class2的子类就返回True... 2.class2类对象组成的元组,只要class1是其中任何一个候选类的子类则返回True  3.其他情况会抛出一个TypeError异常 class Person: ...
  • list类对象的常用方法 a.append(x): 将x作为心愿树天骄到列表末尾 a.count(x): 统计列表中有多少值等于x. a.index(x): 找出第一个等于x元素,并返回下标 a.insert(i,x): 将x插入到列表中,下表为i a.pop(i): ...
  • python类对象的应用---“烤面筋” 在面向对象编程中,对象的应用是非常重要,在这里,我先是创建了一个名为Gluten面筋,然后用“__init__ ”方法保存面筋状态;用“ __str__"方法返回面筋状基本状态;...
  • Python中第一类对象的特性:  1、对象可以赋值给变量  2、对象可以被当做参数传递  3、对象可以被当做函数返回值返回  4、对象可以作为元素被添加到容器类型中 1、对象可以赋值给变量 函数名作为变量...
  • Python 对象 BIF

    2019-07-31 13:43:59
    对于类与对象模块,Python提供了一些BIF object,是所有类的基类,所有类默认继承object类 内置函数BIF 说明 issubclass(class,classinfo) 如果class是classinfo的子类则返回为True,否则返回为False,...
  • 属性是类与对象的一大特征,对属性的访问,Python提供了一些魔法方法,它们在访问属性时自动调用 ...定义当该类的属性被访问时的行为,返回一个属性 __ setattr__(self,name,value) 定义一个...
  • 1.改变对象的字符串显示,要改变一个实例字符串表示,可重新定义它 str () 和 repr () 方法 class Pair: def __init__(self, x, y): self.x = x self.y = y '''repr () 方法返回一个实例代码表示...
  • 几个重点方法: 1、new() 中创建一个对象完后执行,相当于这个方法创建对象 ...使用这个方法后,再打印对象后,就出现这个方法下面return返回的值 如果存在属性,必须创建方法用来给属性赋...
  • 1.类和对象的一些GIF 1.1issubclass(类1,类2) 若类1 是类2 的子类,返回True; >>> class a: pass >>> class b(a): ...1.2 isinstance(对象,类) 若对象类的实例化对象返回True; &g
  • 对象:基于类产生的一个具体事物,具有类的动作和特征,只包含自己的特征数据。 实例化:就是类名(),也就是初始化__init__(),它的作用就是产生一个字典,初始化结果就是返回一个实例对象对象.属性名:先在...
  • 属性和对象属性定义 Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一管理方案。...dir() 返回的仅是对象的属性一个名字表,而__dict__返回的是一个字典,它
  • 1.与对象的概念 1.1和对象 就是一系列对象相似的特征与...python的对象,一个对象的特征称为“属性”,一个对象的行为称为“方法”。 如果我们把学生用表示 class Student: school = '学校' def learn(sel
  • 描述符(Descriptor):就是将某种特殊类型的类的实例(属性与方法),指派给另一个类的属性 ...用于访问属性,返回属性的值,其中 self 是对应描述符本身类的实例,instance 是描述符拥有者的实例化对象, owner ...
  • python内置了多个函数用来...该函数既可以对python内置数据类型进行操作,也可以对自定义的类或者实例进行操作。另外也可以对函数或者方法进行操作。总之,type()可以获取一切对象的类型。type()函数返回的是type...
  • <p>3维向量类的运算重载 描述 编写程序,实现一个3维向量类Vector3,定义相应的特殊(保留)方法实现:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫...
  • 类的普通属性: dir(Myclass), 返回一个key列表; Myclass.__dir__,返回一个字典;  1、类的数据属性;  2、类的方法; 类的特殊属性:  1、Myclass.__name__ 类的名字   2、Myclass.__doc__ 类的文档...
  • 变量名 函数对象对象可以像变量一样进行赋值 还可以作为列表元素进行使用 可以作为返回值返回 可以作为参数进行传递 闭包 -> 函数嵌套 内层函数对外层函数中变量使用 1 超级简易版爬虫 2 from ...
  • python:第一类对象

    2020-07-12 15:24:16
    python:第一类对象Python procedures 特点lambda 表达式 Python procedures 特点 可以当作变量值存储 可以作为另一个procedures形参传入 可以作为procedures返回值返回 ==》第一类对象 ...
  • 1. 与类有关的几个函数 hasattr() #判断对象object是否包含名为name的特性 getattr() # 得到对象的某个属性值 (获取器) setattr() # 给对象添加某个属性值 (设置...isinstance() # 检查对象是否是类的对象返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,137
精华内容 1,254
关键字:

python返回类的对象

python 订阅