和类相关的BIF

  issubclass(class,classinfo),判断第一个参数是第二个参数的子类,这个判断是比较宽松的判断。因为第二个参数也可以是元组,并且只要参数1是元组内任意一个元素的子元素,就会返回True。

>>> class A:
    pass

>>> class B:
    pass

>>> class C(A):
    pass

>>> issubclass(C,A)
True
>>> issubclass(C,B)
False
#C是元组内任意一个元素的子类即返回True
>>> issubclass(C,(A,B))
True
>>> issubclass(C,(B,A))
True
C同时是C自己的子类
>>> issubclass(C,C)
True
#object是所有类的基类
>>> issubclass(A,object)
True

  isinstance(object,classinfo),判断参数1是参数2(一定要是一个类,如果不是类那么会抛出TypeError)的对象:

#实例化一个c
>>> c = C()
#判断c是C的实例化对象
>>> isinstance(c,C)
True
#判断c是B的实例化对象
>>> isinstance(c,B)
False
#由于C是A的子类,所以c也是A的对象
>>> isinstance(c,A)
True
#由于object是所有类的基类所以c也是object的实例化对象
>>> isinstance(c,object)
True
#判断c是否是元组内某个元素的实例化对象
>>> isinstance(c,(A,B))
True
# 当第二个参数不是类的时候,抛出TypeError异常
>>> isinstance(c,1)
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    isinstance(c,1)
TypeError: isinstance() arg 2 must be a type or tuple of types
>>> 

  hasattr(object,name),测试一个对象是否有指定的属性。

>>> class C(A):
    def __init__(self,x):
        self.x = x #为属性x赋初始值

>>> c = C(10)
#判断x是否是对象c中的属性 参数2一定要加引号
>>> hasattr(c,‘x‘)
True
>>> hasattr(c,‘a‘)
False
#如果参数2不带引号,则会抛出异常
>>> hasattr(c,x)
Traceback (most recent call last):
  File "<pyshell#44>", line 1, in <module>
    hasattr(c,x)
NameError: name ‘x‘ is not defined
>>> 

getattr(object,name[,default]),在一个对象中获取指定属性,参数1(object)是实例化对象,参数2(name)是属性名,参数3(default)是可选参数,当不设置参数3的时候如果这个时候访问的属性不存在,则会抛出异常,但是如果设置参数3,则会将参数3抛出,相对比较友好。

>>> getattr(c,‘x‘)
10
>>> getattr(c,‘xx‘)
Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    getattr(c,‘xx‘)
AttributeError: ‘C‘ object has no attribute ‘xx‘
>>> getattr(c,‘xx‘,‘您访问的属性不存在‘)
‘您访问的属性不存在‘
>>> 

  setattr(object,name,value),访问对象属性,并且给该属性赋值,如果该属性不存在,则会为该对象创建该属性,并且赋值,三个参数都不能为空

>>> setattr(c,‘y‘,‘我爱中国‘)
>>> getattr(c,‘y‘)
‘我爱中国‘
>>> setattr(c,‘y‘)
Traceback (most recent call last):
  File "<pyshell#53>", line 1, in <module>
    setattr(c,‘y‘)
TypeError: setattr expected 3 arguments, got 2
>>> setattr(c,‘y‘,‘爱国主义者‘)
>>> getattr(c,‘y‘)
‘爱国主义者‘
>>> 

  delattr(object,name),删除对象属性,如果属性不存在,抛出异常

>>> delattr(c,‘y‘)
>>> delattr(c,‘xx‘)
Traceback (most recent call last):
  File "<pyshell#59>", line 1, in <module>
    delattr(c,‘xx‘)
AttributeError: xx
>>> 

  property(fget=None,fset=None,fdel=None,doc=None),它的作用是在一个类中设置一个属性来方便调用这个类中的其他属性。

>>> class C():
    def __init__(self,size=10):
        self.size = size
    def getSize(self):
        return self.size
    def setSize(self,value):
        self.size = value
    def delSize(self):
        del self.size
    x = property(getSize,setSize,delSize)

>>>
>>> c1 = C()
#在没有定义property以前我们访问和设置方法属性
>>> c1.setSize(10)
>>> c1.getSize()
10
#定义了property之后我们访问和设置方法属性
>>> c1.x
10
>>> c1.x = 20
>>> c1.x
20
>>> del c1.x
>>> c1.x
Traceback (most recent call last):
  File "<pyshell#85>", line 1, in <module>
    c1.x
  File "<pyshell#76>", line 5, in getSize
    return self.size
AttributeError: ‘C‘ object has no attribute ‘size‘
>>> 

原文地址:https://www.cnblogs.com/pengpengzhang/p/8723810.html

时间: 2024-11-15 06:13:56

和类相关的BIF的相关文章

python24 跟类相关的BIF

1. issubclass(class,classinfo) 一个类被认为是其自身的子类 classinfo可以是类对象组成的元组,只要class与其中任何一个候选类的子类,则返回True 其他情况TypeError >>> class A(): ... pass ... >>> class B(A): ... pass ... >>> issubclass(B,A) True >>> issubclass(B,B) True >

类相关的BIF

1.issubclass(class,classinfo),用于判断 class 是否是 classinfo 子类.如果是,返回True, 否则返回 False. 注意:(1).一个类被认为是自身的子类 (2).classinfo 可以是一个元祖(元祖是由各个class名构成),只要 class 是其中任何一个候选类的子类,就会返回 True. 2.isinstance(object,classinfo) ,用于判断class是否是 classinfo 子类,如果是,返回True... 注意:(

课时40:类与对象:一些相关的BIF

目录: 一.一些相关的BIF 二..课时40课后习题及答案 ********************** 一.一些相关的BIF ********************** 1.issubclass(class,classinfo) 如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False: (1)一个类被认为是其自身的子类. (2)classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True. (3)在其

Class类相关

Class类是java.lang包中的类,该类的实例可以帮助程序创建其他类的实例或者取得其他类的对象的内部信息 使用class类获得一个类相关的class类(注意得到的是class类,不是相关的类) 比如类名 classFuck类 有类方法(静态方法)public static Class forName(String classFuck)throw ClassNotFoundException 然后我们用Class对象调用以下方法(classFuck必须有一个无参构造函数 public Obj

C#异常类相关总结

C#异常类相关总结 在做异常处理的时候,最好能在应用程序所有的入口处(事件处理函数,主函数,线程入口)使用try-catch. 但是不要在程序构造函数入口处添加try-catch,因为此处产生异常,它自己并没有能力来处理,因为它还没有构造完毕,只能再向外层抛出异常. C#异常类一.基类Exception C#异常类二.常见的异常类 1.SystemException类:该类是System命名空间中所有其他异常类的基类.(建议:公共语言运行时引发的异常通常用此类) 2.ApplicationExc

玩转linux第四天之用户及组管理类相关命令(二)

1    前言 本文档主要介绍用户及组管理类相关命令如:useradd .usermod.passwd.userdel.groupadd.groupmod\gpasswd.groupdel.hage,chsh,chfn,.id,w,who,whoami.wck,gourpck.su,并提供相应案例解释其含义. 学习这些基础命令是一个Linux爱好者需要具备的首要条件,让小编带领你们进入Linux的世界看看它的一颦一笑. 读者对象 本文档(本指南)主要适用于以下人员: Linux爱好者 2    

[Python]小甲鱼Python视频第040课(类和对象:一些相关的BIF )课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Tue Mar 12 23:36:51 2019 @author: fengs """ """ 0. 如何判断一个类是否为另一个类的子类? issubclass(A,B) A是B的子类就返回True 1. 如何判断对象 a 是否为 类 A 的实例对象? isinstance(a,A) 2. 如何优雅地避免访问对象不存在的属性(不产生异常)?

python类相关总结(持续更新)

__init__ 构造函数 __dict__ vars()函数,获取命名空间里面的名称 __str__ str()函数,输出成员相关信息的内容 __repr__ repl()函数,同样输出信息,在Python内建类的__repr__()返回的字符串是一个有效的表达式,可以使用evel()来产生一个内含值相同的对象 __all__ 在module模块中指定from import *导出的名称 __class__   对象的成员属性之一,可以反着得到类信息 __self__ 通过绑定函数来获取对应对

JDBC工具类相关

第一种(单纯提取注册驱动和获取连接): 把注册驱动,获取连接一起写入工具类静态方法里,并释放资源 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 7 /** 8 * 提供获取连接和释放资源的方法 9 * 10 * @aut