12-3 python细碎概念

本文深入探讨 Python 中的新式类、元类、特殊方法如 __init__ 和 __del__ 的用途,以及如何通过 super() 实现方法解析。此外,还介绍了如何自定义序列和映射类型,并提供了实现细节。
__metatype__==type 标记新式类
元类  用来创建类的东西,就是类的类。详见:blog.jobbole.com/21351/
__init__:构造方法   __del__:析造方法,在对象就要被垃圾回收之前调用,但是发生调用的具体时间不可知。
super()函数返回的是super对象,负责进行方法解析,当对其特性进行访问时,它会查找所有的超类(以及超类的超类),直到找到所有的特性为止或者引发一个AttributeError异常。

序列和映射是对象的集合。
__len__(self):序列的话,这就是元素的个数;对于映射来说,就是键-值对的数量;如果__len__返回0,对象就会被当作一个bool变量的假值。
__getitem__(self, key): 这个方法返回与所给键值对相应的值。对于一个序列,键是0~n-1的证书;对于映射来说,可以使用任何种类的键。
__setitem__(self, key, value): 按一定的方式存储和key相关的value,该值随后可使用__getitem来获取。只能为可以修改的对象定义这个方法。
__delitem__(self, key): 对一部分对象使用del语句时被调用,同时必须删除和元素对应的键。这个方法是为可修改对象定义的。

def checkIndex(key):
    if not isinstance(key, int):
        raise TypeError

    if key < 0:
        raise ValueError

class ArithmeticSequence:
    def __init__(self, start = 0, step = 1):
        qie
        self.start = start
        self.step = step
        self.changed = {}

    def __getitem__(self, key):
        try:
            return self.changed[key]
        except KeyError:
            return self.start + key * self.step

    def __setitem__(self, key, value):
        checkIndex(key)
        self.changed[key] = value
1.如果key没有修改,changed[key]引发异常,被except KeyError捕捉到 ,所以 无法return结束。
2.__init__(self, start=1, step = 1)
没有给出终点,所以该序列是无限序列

 property()  详见:python.jobbole.com/81967/

将自己写的模块放到C:\python目录下,1)import sys  2)sys.path.append('C:/python') //告诉解释器,除了从默认的目录寻找之外,还需要从目录c:\python中寻找模块,完成这个就能导入自己放在c:\python下的模块了。
导入模块只发生一次,第二次什么也不会发生。为了防止类似于相互引用产生无限递归。如果要重新载入模块,用reload()函数,用法是:module_name = reload(module_name)   python3.0已经取消。使用exec替代。
if __name__ == '__main__':     告知模块本身是作为程序运行还是导入到其他程序,在主程序中,__name__的值是'__main__',而在导入模块中,这个值被设定为模块的名字。由于模块中加入了测试语句,引入模块时,并不希望显示出测试语句的运行结果,所以添加该语句判断是主程序还是作为模块被引入程序。模块和主程序中都要加入这一判断语句。

将自己编写的模块放入sys.path的任意路径下,就能使用import引入
from module import *  只能导入模块下,__all__属性列表中的方法,其他方法显示导入
学习python最好的方法之一,学习源码。module.__file__,可以知道模块放的位置

re 正则表达式

通配符 
.  匹配一个的字符,除了换行符。  \\ 转义处理   []创建字符集[a~zA~Z0~9],匹配一个a~z的一个字符  [^a~z]反转字符,^如果脱字符出现在字符集的开头,那么你需要对其进行转义,除非你希望它作为否定运算符(换句话说,不要把它放在开头)。]、-应该放在字符集的开头或者反斜线转义。
选择符和子模式:'python|perl' | 为选择符号, p(ython|erl) ()为子模式,子模式中加上?,它就变成了可选项。
(pattern)*可以出现0次或者多次,(pattern)+可以出现1次或者多次 ,(pattern){m, n}循序模式出现m~n次  ^字符串开始,$字符串结尾。

### ArcGIS 中消除细碎图斑的方法 在ArcGIS中,处理和消除细碎图斑是一个常见的地理信息系统(GIS)操作需求。这不仅有助于提高地图美观度,还能优化数据分析效率。 #### 使用临界面积设定过滤条件 对于图斑的处理逻辑在于设置一个临界面积阈值。当某个图斑的实际面积超过此预定义数值时,则不会对该图斑实施任何改变;反之则会考虑将其与其他临近区域合并[^2]。这种方法能够有效减少不必要的细节干扰,使得最终的地图产品更加简洁明了。 #### 基于邻近关系的地类属性融合 针对具体应用场景中的小图斑问题,可以采用基于其周围环境特征来进行智能化聚合的方式解决。具体来说就是利用`Spatial Join`功能连接目标要素与其周边较大范围内的对象,并据此判断两者间是否存在相似特性(例如相同的土地用途类别)。如果满足一定条件下就可以实现自动化的合并过程[^3]。 ```sql -- SQL查询用于创建新的文本字段以存储大面积图层信息 ALTER TABLE output_layer ADD COLUMN large_cc TEXT; ALTER TABLE output_layer ADD COLUMN unique_id TEXT; UPDATE output_layer SET (large_cc, unique_id) = ( SELECT cc_code, id FROM big_area_layer WHERE ST_Intersects(big_area_layer.geom, output_layer.geom) ); ``` 上述SQL语句展示了如何向输出表中增加两个新列来保存来自更大规模覆盖区的数据记录,从而辅助后续分析决策流程。 #### 实战教程推荐 为了更深入地掌握这些技能和技术细节,《ArcGIS全系列实战视频教程》提供了详尽的操作指南与实例演练机会。其中包括但不限于: - **ArcGIS10.X入门实战视频教程**:帮助初学者快速上手基本概念及常用工具; - **ArcGIS之模型构建器(ModelBuilder)**:介绍自动化工作流的设计思路及其实际运用场景; - **ArcGIS之遥感影像分类及成果应用视频课程**:专注于图像识别领域内高级算法的学习实践; - **ArcPy结合数据驱动模块的批量制图**:探索Python脚本编程接口的强大之处以及批量化生产任务管理技巧; - **ArcGIS之Data Reviewer空间数据质量检查**:确保所生成的结果符合既定标准并具备高度可靠性[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值