首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第十四章补充

classinfo可以是类对象组成元组,只要class是其中任何一个候选类子类,则返回TRUE 其他情况会抛出一个TypeError异常 >>> class A: ......TRUE 如果第一个参数不是对象,那么永远返回false classinfo可以是类对象或者类组成元组,只要object其中任何一个候选对象实例。...则返回true 如果第二个参数,不是类或实例对象组成元组,则会抛出一个TypeError 异常 >>> issubclass(B,A) True >>> b1 = B() >>> isinstance...,属性意思 第一个参数(object)是对象,第二个参数(name)是属性名 >>> class C: ......object has no attribute 'y' >>> setattr(object,name,value) 与getattr()对应,setattr()可以设置指定属性,如果没有则会创建一个新属性并赋值

42920

学习笔记-小甲鱼Python3学习第十三

用()把元素括起来,用,逗号隔开 创建和访问元组 更新和删除元组 元组相关操作符 元组创建: >>> tuple1 = (1,2,3,4,5,6,7,8)            #使用()括起来,用...,只是没有变量引用它,一段时间以后原来元组存储区域就会被python回收 元组跟数组不同,不能使用pop(),remove()方法删除其中元素,不过可以使用del删除整个元组(用法少,一般不会明显删除整个元组...当然选择列表了,列表提供灵活编程方法,元组一经创建不能修改,缺乏灵活性 3.请将下图左边列表内置方法与右边注释连线,并圈出元组可以使用方法。 ?...肯定不是,这是赋值操作,是对x,y,z分别赋值 所有的多对象、逗号分隔没有明确用符号定义这些集合默认类型都是元组。...6.请写出以下情景中应该使用列表还是元组来保存数据:  1) 游戏中角色属性:列表 2) 你×××信息:元组  3) 论坛会员:列表  4) 团队合作开发程序,传递给一个你并不了解具体实现函数参数

50010
您找到你想要的搜索结果了吗?
是的
没有找到

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

(2)classinfo可以是类对象组成元组,只要class是其中任何一个候选类子类,则返回True。 (3)在其它情况下,会抛出一个TypeError异常。...(2)如果第一个参数不是对象,则永远返回False。 (3)classinfo可以是类对象组成元组,只要object是其中任何一个候选对象实例,则返回True。...(4)如果第二个参数不是类或者由类对象组成元组,会抛出一个TypeError异常。...,如果指定属性不存在,则返回default(可选参数)值;若没有设置default参数,则抛出ArttributeError异常。...无论内部怎么改动,只需要相应修改property()参数,用户仍然只需要去操作x属性即可,没有任何影响。 很神奇是吧?想知道它是如何工作?下一章节会讲到。

51620

Python 元组和集合特点及常用操作

一、元组特点: 1、有序集合 2、通过偏移来取数据 3、属于不可变对象,不能在原地修改内容,没有排序,修改等操作。...(b) ###新生成了一个对象,表面上是修改成功了 >>> a (5, 2, 3) 思考:元组不能改变,那为什么有列表,还要有元组呢?...元组一般当成参数传递给方法,而不是传递列表,元组不可变好处,保证数据安全,比如我们传给一个不熟悉方法或者数据接口,确保方法或者接口不会改变我们数据从而导致程序问题。 #!..." return a #不会修改列表值 a = [1,2,3] print "start-" print id(a) info(a) print a 二、集合:集合是没有顺序概念。...内置方法set(),接收可迭代对象,如果对象有__iter__ 属性,就是可以迭代对象,如字符串、列表、元组 1、创建集合。

90620

Python正则表达式

当使用正则表达式时,一对圆括号可以实现以下任意一个(或者两个)功能: 对正则表达式进行分组; 匹配子组 常见正则表达式属性 函数/方法 描述 仅仅是re模块 compile 使用任何可选标记来编译正则表达式模式...num特定子组 groups 返回一个包含所有匹配子组元祖(没有成功,返回空元组) groupdict 返回一个包含所有匹配命名子组字典,所有的子组名称作为字典键 常用模块属性 re.I...group()要么返回整个匹配对象,要么根据要求返回特定子组。groups()则仅返回一个包含唯一或者全部子组元组。...如果没有子组要求,那么当group()仍然返回整个匹配时,groups()返回一个空元组。 使用match()方法匹配字符串   match()函数试图从字符串起始部分对模式进行匹配。...subn()和sub()一样,但是subn()还返回一个表示替换总数,替换后字符串和表示替换总数数字一样一起作为一个拥有两个元素元组返回。

1.6K90

Python编程思想(28):限制类动态特性(__slots__属性

前面介绍了如何对象动态添加方法,但是所添加方法只是对当前对象有效,如果希望为所有实例都添加方法,则可通过为类添加方法来实现,代码如下: 示例代码:dynamic_class_method. py class...在创建Dog对象后,为Dog类动态添加了run()方法,为Dog动态添加run()方法后,Dog类两个实例d1hed2都拥有了run()方法,因此上面程序中最后两行d1和d2都可调用run()方法。...__slots__属性值是一个元组,该元组所有元素列出了该类实例允许动态添加所有属性名和方法名(对于 Python而言,方法与属性相同,只是这类属性值为函数本身),代码如下: 示例代码:slots_demo...因此,这段代码中动态添加walk和age属性都是允许,但被注释掉代码动态添加了sleep属性,就会抛出如下异常: AttributeError: 'Dog' object has no attribute...如果要限制子类实例动态添加属性和方法,则需要在子类中也定义__ slots__属性,这样,子类实例允许动态添加属性和方法就是子类__ slots__元组加上父类__slots__元组和,代码如下

66630

Python编程常见出错信息及原因分析(2)

: 'set' object has no attribute 'count' 错误原因分析与解决方案: 错误信息显示当前对象并不具有一个叫做'***'属性或方法,所以调用失败。...这种错误一般是因为记错了对象属性或方法,也可能是前面某段代码代码修改了变量x类型,自己却忘记了。...遇到这种错误时,首先应使用type()函数确定当前位置x是什么类型,然后可以在使用dir()确定该类型对象是否具有'***'属性或方法。...,因为作为Python程序员我们肯定知道元组和字符串是不可变容易对象,是不允许修改其中元素值,也不允许删除其中元素。...遇到这种错误时,一般是调用了其他函数或方法而不知道该函数或方法返回元组或字符串或其他不可变容易对象,应仔细检查出现错误代码之前函数或方法调用代码。

3.3K70

定制类和黑魔法

hasattr(object, name):用来检测object(适用于类、文件、模块或对象,一切皆对象)中有没有一个name字符串对应方法或属性。...pass ...  >>> a = A() >>> isinstance(a, A) True   因此,创建了一个类就是创建了一种对象类型。...,对象也只能使用那些属性对象不能自己去创建属性(因为没有了__dict__),也不能修改类属性,因为受类控制。     ...__getattr__用较多。 结合属性拦截对字符串、列表、元组、字典补充:   由上面介绍属性拦截可知在对象通过点(.)方式操作属性会触发上面四种具有属性拦截功能方法。...同样对象通过键方式操作属性时,也会触发上面的三种方法。需要注意是,字符串和元组只能取出其元素,不等删除和修改元素,所以字符串和元组中只有__getitem__方法。

45510

python内置函数大全

bin(3) '0b11' oct:将整数转化成8进制数字符串 >>> oct(10) '0o12' hex:将整数转换成16进制字符串 >>> hex(15) '0xf' tuple:根据传入参数创建一个新元组...>>> tuple() #不传入参数,创建元组 () >>> tuple('121') #传入可迭代对象。...使用其元素创建元组 ('1', '2', '1') list:根据传入参数创建一个新列表 >>>list() # 不传入参数,创建空列表 [] >>> list('abcd') # 传入可迭代对象...__init__ object:创建一个新object对象 >>> a = object() >>> a.name = 'kim' # 不能设置属性 Traceback (most recent call...,或者根据传入参数创建一个新类型 >>> type(1) # 返回对象类型 #使用type函数创建类型D,含有属性InfoD >>> D = type('D',(A,

2.8K60

提高代码效率6个Python内存优化技巧

但是其实有许多方法可以显著优化Python程序内存使用,这些方法可能在实际应用中并没有人注意,所以本文将重点介绍Python内置机制,掌握它们将大大提高Python编程技能。...在运行时可以向Python类添加额外属性和方法能力。 例如,下面的代码定义了一个名为Author类。最初它有两个属性name和age。...由于属性是固定,Python不需要为它维护字典,只为__slots__中定义属性分配必要内存空间。...1、元组比列表更节省内存 元组是不可变(在创建后不能更改),它允许Python在内存分配方面进行优化。列表是可变,因此需要额外空间来容纳潜在修改。...my_tuple比列表使用更少内存,如果创建后不需要更改数据,我们应该选择元组而不是列表。

20110

python异常报错详解

断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误基类 IOError 输入/输出操作失败...当使用2元组创建此类型异常时,第一个项目在实例errno属性上可用(假定为错误编号),第二个项目可用于该 strerror属性(通常是关联错误消息)。元组本身也可以在args属性上使用。...该filename属性是None使用3个参数以外其他异常创建errno和strerror属性也None当实例与其他大于2个或3个参数创建。...异常AttributeError 属性引用(请参阅属性引用)或赋值失败时引发。(当一个对象根本不支持属性引用或属性赋值时,会TypeError被提出。)...异常ReferenceError 当由weakref.proxy()函数创建弱引用代理在垃圾回收之后用于访问指称对象属性时,引发异常 。有关弱引用更多信息,请参阅该weakref模块。

4.6K20

Python错误及异常总结汇总

我们可以为不同异常创建不同处理器,而不是盲目地创建一个”catch-all/捕获所有”代码。 3. python中常见异常 NameError:尝试访问一个未声明变量 ?...任何类型 I/O 错误都会引发 IOError 异常. AttributeError:尝试访问未知对象属性 ?...属性被定义后, 我们可以使用熟悉点/属性操作符访问它, 但如果是没有定义属性, 例如我们访问 hq 属性, 将导致一个 AttributeError 异常. 4....第二个符号为可选 args(比如参数,值),来传给异常.这可以是一个单独对象也可以是一个对象元组.当异常发生时,异常参数总是作为一个元组传入.如果 args 原本就是元组,那么就将其传给异常去处理...;如果 args 是一个单独对象,就生成只有一个元素元组(就是单元素元组).大多数情况下,单一字符串用来指示错误原因.如果传元组,通常组成是一个错误字符串,一个错误编号,可能还有一个错误地址

1.3K110

一文教你读懂 Python 中异常信息

虽然 Python Traceback 提示信息看着挺复杂,但是里面丰富信息,可以帮助你诊断和修复代码中引发异常原因,以及定位到具体哪个文件哪行代码出现错误,所以说学会看懂 Traceback...AttributeError 当你访问一个对象属性,但是这个属性没有在这个对象定义时候,就会引发 AttributeError。...' object has no attribute 'b' AttributeError 错误消息行告诉我们特定对象类型(在本例中为 int)没有访问属性, 在这个例子中属性为 b。...: 'tuple' object has no attribute 'append' 这里尝试给 a_list 对象进行 append 操作但是引发了异常, 这里错误信息说,tuple 对象没有...TypeError 当你代码试图对一个无法执行此操作对象执行某些操作时,例如将字符串添加到整数中,以及一开始例子使用 append 方法给元组添加元素,这些都会引发 TypeError。

2.4K10

PYTHON知识点学习-列表和元组

但是有一个功能有非常明显区别: 列表: 可变 创建好之后, 随时能改--->相当于散装辣条 想来几根就几根,很容易,可以随时改 元组: 不可变 创建好之后, 改不了.要想改,只能丢弃旧...append 是搭配列表对象a,来一起使用,而不是作为一个独立函数 这种要搭配对象来使用函数(function),也叫做"方法"(method) 在python 中,对象,就可以视为是"变量"...旧值释放操作' 元组操作 #1.创建元组 a = () print(type(a)) b = tuple() print(type(b)) #2.创建元组时,指定初始值. a = (1,2,3,4...support item assignment # a.append(5) # 运行结果: 属性 # AttributeError:...如果使用元组作为参数,就可以避免这样纠结~~ 元组不能修改=>不可变对象~~ 不可变对象,是可以哈希! 下一篇让我们继续探索 什么是哈希吧! 感谢大家 支持

10810

非常全通俗易懂 Python 魔法方法指南(下)

Python标准库包含一个 contextlib 模块,里面有一个上下文管理器 contextlib.closing() 基本上和我们包装器完成是同样事情(但是没有包含任何当对象没有close()...创建描述符对象 描述符是一个类,当使用取值,赋值和删除 时它可以改变其他对象。描述符不是用来单独使用,它们需要被一个拥有者类所包含。...描述符可以用来创建面向对象数据库,以及创建某些属性之间互相依赖类。描述符在表现具有不同单位属性,或者需要计算属性时显得特别有用(例如表现一个坐标系中类,其中距离原点距离这种属性)。...这个元组包含2到5个元素,其中包括:一个可调用对象,用于重建对象时调用;一个参数元素,供那个可调用对象使用;被传递给 __setstate__ 状态(可选);一个产生被pickle列表元素迭代器...,无论他们有没有使用Python或者进行面向对象编程经验。

79231

非常全通俗易懂 Python 魔法方法指南(下)

Python标准库包含一个 contextlib 模块,里面有一个上下文管理器 contextlib.closing() 基本上和我们包装器完成是同样事情(但是没有包含任何当对象没有close()...创建描述符对象 描述符是一个类,当使用取值,赋值和删除 时它可以改变其他对象。描述符不是用来单独使用,它们需要被一个拥有者类所包含。...描述符可以用来创建面向对象数据库,以及创建某些属性之间互相依赖类。描述符在表现具有不同单位属性,或者需要计算属性时显得特别有用(例如表现一个坐标系中类,其中距离原点距离这种属性)。...像往常一样,当你需要比默认行为更加精确控制时。例如,如果你想拷贝一个对象,其中存储了一个字典作为缓存(可能会很大),拷贝缓存可能是没有意义。...,无论他们有没有使用Python或者进行面向对象编程经验。

67811
领券