Python-部份内置属性方法

@property
类的静态属性,封装内部具体实现细节,调用的时候类似调用数据属性。既可以访问类属性,也可以访问实例属性

  ![](https://s1.51cto.com/images/blog/201906/08/6de11e5b657bbb1c6e02f4ed64821fa7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

@classmethod
类方法

  ![](https://s1.51cto.com/images/blog/201906/08/d36f46a721750e99047808d30276f111.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

@staticmethod
类的工具包,不能使用类变量和实例变量

继承顺序

第二种

继承、多态、封装

多态:在不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同

封装
封装数据:将数据隐藏起来这不是目的。隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制。
封装方法:目的是隔离复杂度

封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数),只要接口(函数)名、参数不变,使用者的代码永远无需改变。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。

反射

反射 主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。

`getattr(object, name, default=None)```:判断object中有没有一个name字符串对应的方法或属性

hasattr(object,‘name‘) - 检测是否含有某属性 

setattr(object,name,True)  - 设置属性\

delattr(object,‘name‘) - 删除属性

基于反射- 动态导入模块

内置属性方法

getattrdelattr , setattr

getattr :一个对象在调不存在的属性时候,就会自动触发。

delattr : 一个对象删除类属性或对象属性时候,会触发

setattr : 在设置属性或新增属性时候,默认就会触发 setattr ,如果在创建类的时候重新定义了setattr方法,要写上操作属性字典代码,不写就增加属性不成功

利用上述几个内置方法,可以二次加工标准类型。比如重新定义setattr,在新增属性之前加点自定义参数

包装一个类型通常是对已存在的类型的一些定制,这种做法可以新建,修改或删除原有产品的功能。其它的则保持原样。授权的过程,即是所有更新的功能都是由新类的某部分来处理,但已存在的功能就授权给对象的默认属性。

实现授权的关键点就是覆盖getattr方法

setitem,getitem,delitem 用字典方式调用属性的时候就会触发。如:kk[‘name‘]

用点(.)方式调用属性会触发 getattr等方法。如:kk.name

str,repr,:改变对象的字符串显示str,repr
自定制格式化字符串format

str函数或者print函数--->obj.str()
repr或者交互式解释器--->obj.repr()
如果str没有被定义,那么就会使用repr来代替输出
注意:这俩方法的返回值必须是字符串,否则抛出异常

slots

slots是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性)

使用点来访问属性本质就是在访问类或者对象的dict属性字典(类的字典是共享的,而每个实例的是独立的),字典会占用大量内存,如果有一个类,属性很少,但是实例很多,为了节省内存可以使用slots取代实例的dict。(可以说是用来作为一个内存优化工具)

定义了slots后的类不再 支持一些普通类特性了,比如多继承

del

析构方法,当对象在内存中被释放时,自动触发执行。

注:如果产生的对象仅仅只是python程序级别的(用户级),那么无需定义del,如果产生的对象的同时还会向操作系统发起系统调用,即一个对象有用户级与内核级两种资源,比如(打开一个文件,创建一个数据库链接),则必须在清除对象的同时回收系统资源,这就用到了del

nextiter实现迭代器协议

原文地址:https://blog.51cto.com/11533525/2409064

时间: 2024-10-06 23:28:28

Python-部份内置属性方法的相关文章

Python字典内置函数&方法

字典内置函数&方法 Python字典包含了以下内置函数: 序号 函数及描述 1 cmp(dict1, dict2)比较两个字典元素. 2 len(dict)计算字典元素个数,即键的总数. 3 str(dict)输出字典可打印的字符串表示. 4 type(variable)返回输入的变量类型,如果变量是字典就返回字典类型. Python字典包含了以下内置函数: 序号 函数及描述 1 radiansdict.clear()删除字典内所有元素 2 radiansdict.copy()返回一个字典的浅复

Python 的内置字符串方法(收藏专用)

method 字符串 string python3.x  python 4.7k 次阅读  ·  读完需要 44 分钟 5 字符串处理是非常常用的技能,但 Python 内置字符串方法太多,常常遗忘,为了便于快速参考,特地依据 Python 3.5.1 给每个内置方法写了示例并进行了归类,便于大家索引.PS: 可以点击概览内的绿色标题进入相应分类或者通过右侧边栏文章目录快速索引相应方法. 概览 字符串大小写转换 str.capitalize() str.lower() str.casefold(

python的内置排序方法+文件操作

li = [22,34,2,11] print (li) li.sort() print (li) 或者直接 new = sorted(li) print (new) 字符串和数字不能放在一起排序,全是数字按照数字大小排序.如果是字符串,分三类,数字优先于字母优先于中文,字符码排序,从前往后拍,最大位要是小就放在前面,如果相同比下面的一位. 文件操作: 一,打开文件 二,操作文件 三,关闭文件 open(文件名,模式,编码) 我创建了一个'ha.log'文件 f = open('ha.log')

python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)

今日临时总结的内容,可能还有些不正确的地方,初步当做个速查表吧. 类的内置函数(继承object的,自己重写) 内置函数 执行时机 注意点 调用案例 __init__ 实例化对象时 不允许写返回值(return None和不返回没区别)子类重写了__init__()方法要在子类中的__init__()方法调用父类的__init__方法(super(当前类, self).__init__(参数)) stu = Student() __new__ 类实例化被调用时 stu = Studetn() _

Python的内置方法,abs,all,any,basestring,bin,bool,bytearray,callable,chr,cmp,complex,divmod

Python的内置方法 abs(X):返回一个数的绝对值,X可以是一个整数,长整型,或者浮点数,如果X是一个复数,此方法返回此复数的绝对值(此复数与它的共轭复数的乘积的平方根) >>> abs(3+2j) 3.605551275463989 >>> abs(3-2j) 3.605551275463989 all(iterable):如果迭代器的所有元素都是true,或者空迭代器,则此方法返回true. any(iterable):迭代器只要有一个元素为false,或者空

python中类的内置属性初探

首先,建立一个类,并用该类创建一个对象,分别查看object,类与对象的内置属性 1 import inspect 2 3 class Foo(): 4 '''随便瞎写''' 5 group = 'buluo' # 类属性 6 7 @classmethod 8 def getnum(cls): # 类方法 9 return 123 10 11 def __init__(self): 12 self.name = '222' # 对象私有属性 13 self.age = 12 14 15 def

Python pandas 数据框的str列内置的方法详解

原文链接:http://www.datastudy.cc/to/31 在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等这种需求,如果掌握str列内置的方法,处理起来会方便很多. 下面我们来详细了解一下,Series类的str自带的方法有哪些. 1.cat() 拼接字符串 例子: >>> Series(['a', 'b', 'c']).str.cat(['A', 'B', 'C'], sep=',

Python 常用内置函数

abs 取绝对值 print(abs(-1)) #结果1 all(...) all(iterable) -> bool Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True. 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False:函数等价于: 1 def all

selenium 页面元素的内置属性

页面元素的内置属性 ----------------------------- url = "http://www.baidu.com" # 访问sogou首页 driver.get(url) # 找到搜索输入框元素 searchBox = driver.find_element_by_id("kw") print dir(searchBox)   print页面元素属性结果如下: ['__class__', '__delattr__', '__dict__', '