一句话说明 __slots__是用来限制实例的属性的,__slots__可以规定实例是否应该有__dict__属性:__slots__不能限制类的属性. 只有__slots__列表内的这些变量名可赋值为实例属性. class A: __slots__=['name'] def __init__(self): self.name='js' self.age=22 a=A() 运行结果: Traceback (most recent call last): File "a.py", lin…
1.Python中的对象模型python中所有东西都是对象 class对象:表示Python内置的类型和定义的类型instance对象(实例对象):表示由class对象创建的实例 1.1 对象间的关系is-kind-of关系:对应于面向对象中的基类与子类之间的关系is-instance-of关系:对应于面向对象中类与实例之间的关系 <class A>表示名为A的class对象<instance a>表示名为a的instance对象class A 定义了一个名为A的classclas…
为什么有"slots"属性? 默认情况下,python对象队象的每个实例(instance)都会有一个字典来存储该实例的属性,这样做的好处在于运行时期每个对象可以任意设置新的属性.而相对应的坏处是,当创建成百上千个这样的实例的时候回很浪费内存.所以引入__slots__,用来指定实例只拥有固定的属性,因此python会给每个实例对象分配固定的内存空间,从而减少内存消耗.而且使用__slots__可以加快属性的访问. 用法 __slots__可以被设置成属性名称的字符串,可遍历的对象或者…
前言 前面我们总结过了python的关键字.运算符.内置函数.语法糖等与python魔法方法之间的关系,现在我们更细一点,看看python的面向对象编程有哪些常用的魔法属性和魔法方法. 魔法属性 对于一个类,python定义了许多可用的魔法属性,有些每个类都默认存在,有些需要用户手动定义. __dict__ __dict__属性可以说是一个类最常用的属性之一了,它又分为类的__dict__属性和实例的__dict__属性. class Person(object): eye = 2 hand =…
JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode    父节点 childNodes    子节点 firstChild    父节点里的第一个子节点 lastChild     父节点里的最后一个子节点 nextSibling    与子节点并列的下一个兄弟节点 previousSibling   与子节点并列的上一个兄弟节点 火狐与谷歌支持而ie8不支持的节点关系有: previous…
[python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自动调用, 可以通过super函数(super(FatherCall, self).init())或者未绑定构造方法,来调用父类的构造方法.super是有在__metaclass__=type时才可以使用, 有多个父类时,super能保证每个父类的构造方法都被执行 __del__: 析构方法:对象被回…
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher:             #创建一个老师类     __isinstance = None     #创建一个私有静态变量, 准备用来指向一个裸着的对象     def __new__(cls, *args, **kwargs): #创建一个裸着的对象         if not cls.__is…
一:css组合选择器 特性:每个选择器位可以为任意基本选择器或选择器组合 选择器分为以下几类: 群组选择器,子代(后代)选择器,相邻(兄弟)选择器,交集选择器,多类名选择器 1.群组选择器:    div,sqan,  .red,  #div { color : red } 一次性控制多个选择器 选择器之间以 ,(逗号) 隔开,每一个选择器位均可以任意合法选择器或选择器组合 2.子代(后代)选择器:    子代选择器用 > 连接 body > div { color : red ; }   …
老猿Python博文目录 老猿Python博客地址 一.概述 textElideMode属性用于控制省略文本中省略号"-"的位置,当项的内容过多视图无法显示完整时会显示部分内容,并在显示内容中增加省略号以表示项的内容显示不完整. textElideMode属性的类型为枚举类型 Qt.TextElideMode,缺省值为Qt.ElideRight. 二.枚举类型 Qt.TextElideMode取值及含义 三.访问方法 可以使用textElideMode() .setTextElideM…
老猿Python博文目录 老猿Python博客地址# 一.概述 defaultDropAction属性用于控制QAbstractItemView及其子类的实例视图中拖放时放下的默认操作.该属性的类型为枚举类型DropAction. 二.defaultDropAction取值及含义 三.访问方法 如果未设置该属性,则defaultDropAction默认为CopyAction.可以通过defaultDropAction().setDefaultDropAction(DropAction)来访问和设…
老猿Python博文目录 老猿Python博客地址 dragEnabled属性用于控制视图是否支持拖拽,可以通过dragEnabled().setDragEnabled(bool enable)进行属性访问和设置. dragEnabled属性很简单,但老猿采用QListView和QTableView反复验证后,发现该属性实际上没有什么作用,在View内是否能拖放是由dragDropMode属性来控制的,如dragEnabled为False,dragDropMode为DragDrop,在view内…
老猿Python博文目录 老猿Python博客地址 一.概述 dragDropMode属性用于控制视图拖放事件的处理方式,其类型为枚举类型DragDropMode. 二.枚举类型DragDropMode取值及含义 三.访问方法 dragDropMode():读取属性值,返回值为bool类型 setDragDropMode(DragDropMode behavior):设置属性 老猿Python,跟老猿学Python! 博文目录 博客地址…
老猿Python博文目录 老猿Python博客地址 一.概述 SelectionBehavior属性用于控制选择行为操作的数据单位,是指选择时选中数据是按行.按列还是按项来选择.SelectionBehavior对应类型为枚举类型QAbstractItemView.SelectionBehavior . 二.QAbstractItemView.SelectionBehavior 取值及含义 三.属性访问方法 selectionBehavior():读取属性值 setSelectionBehavi…
老猿Python博文目录 老猿Python博客地址 一.概述 selectionMode属性用于控制view中操作选择数据项的模式,用于控制用户是否可以选择一个或多个数据项,以及在多个数据项选择中,选择是否必须是一个连续的范围. 二.QAbstractItemView.SelectionMode取值含义 selectionMode属性的类型为枚举类型枚举类型 QAbstractItemView.SelectionMode,对应取值及含义如下: 以上取值中,常用值为SingleSelection…
老猿Python博文目录 老猿Python博客地址 概述 QAbstractItemView的showDropIndicator属性用于控制在拖拽过程中显示当前拖拽到的位置,当释放时则在当前拖拽位置覆盖或插入. 插入模式DropIndicator提示 当鼠标光标移动到两个数据项之间时,拖放指示变成一条横线,表示在当前位置放下数据时将会把数据插入到横线的位置,如图: 上图中黄色标记部分的中间细线为拖放指示横线,鼠标光标下面蓝色标记的数据为正在拖放的数据,而下方的蓝色数据是拖放数据来源的数据,即拖放…
一.引言 Qt Designer的表单布局(formLayout)中,layoutFormAlignment 用于控制表单布局中所有子部件在布局框内的对齐方式(与layoutLabelAlignment类似,也包括垂直和水平方向两个方向).如图: 此属性实际对应的是QFormLayout的formAlignment 属性,缺省值取决于部件或应用程序样式.对于 QMacStyle样式,缺省值是Qt.AlignHCenter | Qt.AlignTop,其他样式默认值都是 Qt.AlignLeft…
__slots__是在python 2.2开始引入的一个新特性, 我们来看一下官方给出的解释. This class variable can be assigned a string, iterable, or sequence of strings with variable names used by instances. If defined in a new-style class, __slots__ reserves space for the declared variables…
常规情况下,类的属性字典是共享的,而实例的字典是独立的.如果一个类的属性较少,但是拥有很多的实例,这些实例的属性字典会占用较多的内存空间.对这样的类来说,为了节省内存空间,可以使用__slots__类变量代替__init__()来存储数据属性. 定义__slots__之后,系统会为实例使用一种更加紧凑的内部表示,即通过一个很小的固定大小的数组来构建,而不是为每一个实例定义一个字典. __slots__可以是列表.元组.字符串等可迭代对象 定义__slots__之后,类保留有__dict__,但实…
1.Python中的属性和方法的绑定 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法. (1)首先,定义一个class:  class Student(object):  pass (2)然后,给实例绑定属性: >>> s = Student() >>> s.name = 'Michael' # 动态给实例绑定一个属性 >>> print(s.name) Michael (3)或者,给实例绑定一…
启用 WinRM 远程服务: winrm quickconfig 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!QQ群:1097524789 查看 WinRM 服务监听状态: winrm e winrm/config/listener C:\Windows\system32>winrm…
python是动态语言 1. 动态语言的定义 动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用.它是一类 在运行时可以改变其结构的语言 :例如新的函数.对象.甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化.动态语言目前非常具有活力.例如JavaScript便是一个动态语言,除此之外如 PHP . Ruby . Python 等也都属于动态语言,而 C . C++ 等语言则不属于动态语言.----来自 维基百科 2. 运行的过程中给对象绑定(添加)属性 >…
赵斌 - APRIL 29, 2015 在 python 代码中可以看到一些常见的 trick,在这里做一个简单的小结. json 字符串格式化 在开发 web 应用的时候经常会用到 json 字符串,但是一段比较长的 json 字符串是可读性较差的,不容易看出来里面结构的. 这时候就可以用 python 来把 json 字符串漂亮的打印出来. root@Exp-1:/tmp# cat json.txt {"menu": {"breakfast": {"E…
1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate(cities): print(i, city) 2. x_list = [1, 2, 3] y_list = [2, 4, 6] # the good way for x, y in zip(x_list, y_list): print (x, y) 3. x = 10 y = -10 # the…
python作为一个动态语言, 本身学习曲线比较平滑, 效率相比起来会比c++和java低一些. 脚本语言都是运行时编译的, 这个对于效率的影响是非常大的. 我借用参考1的代码, 加了点代码import time import time class Timer(object): def __init__(self): pass def __enter__(self): self.start = time.time() def __exit__(self, exception_type, exce…
我们都知道, python是一个强类型的语言, 也是一个动态类型的语言. 但是在python2.X系列中, 这个强类型是需要打折扣的, 是非常接近强类型. 我们来看下面的代码片段 In [1]: 'a' < 1000 Out[1]: False 字符串和整型居然可以比较, 这个是个非常奇怪的行为. 强类型的语言是不应该允许有这种类型间的隐式转换的, 所以这种比较应该是报错的才对. Java就是这样的一个语言. 不过强类型的语言中, 是可以各种数字类型之间存在隐式转换的. python的这个字符串…
简介 with是从2.5版本引入的一个语法. 这个语法本身是为了解决try..finally繁琐的释放各类资源(文件句柄, Lock等)的问题. 如果想在旧版本中使用这个功能, 直接引入future模块就可以. from __future__ import with_statement 举例简单说明一下没有with和有with的代码区别 try: dict_file = open("dict_file_path") for line in dict_file: print line,…
每个人在使用python的过程中都会遍历list和dict. List遍历 最常用最简单的遍历list的方法 a = ["a", "b", "c", "d"] # simple iterate for i in a: print i 但是, 如果我需要拿到list的index, 很多人可能会这样写 a = ["a", "b", "c", "d"]…
Python的method可以设置默认参数, 默认参数如果是可变的类型, 比如list, map等, 将会影响所有的该方法调用. 下面是一个简单的例子 def f(a=None, l=[]): if not a: return l l.append(a) return l if __name__ == "__main__": print f("a") print f("b") print f("b") print f(l=[]…
python是动态语言, 无需声明变量即可使用. 传递一个tuple, list或者dict等等方式, 有时候这种方式的使用不是很好. 对于tuple和list来说都是用下标的访问方式(即使用[]), 这种方式显得不够自然, 阅读代码的时候需要知道index对应的变量含义. 其实, 在python中有很多方式可以动态定义一个新变量, 让代码更具可读性. 动态定义一个新变量, 最简单的方式是使用locals()或者globals(), 两个方法的返回值是dict, 可以通过修改dict来增加新变量…
python 的包管理很不好用,理解费力,故偷懒,模块仍按文件布局,写一个合并脚本将各个模块合并输出到一个脚本文件,分别管理,合并输出,回避了加载模块的问题 f-format 仅在python 3.6及以上版本支持 装饰器是个好东西,推荐用于辅助功能的实现,不干扰代码主要逻辑的表达,比如实现日志记录等功能 反射是个好东西,可以用于自行查找相关函数并调用,在实现可选功能时可以使用,比如可选参数验证流程 匿名参数是个好东西,可以统一接口代码,方便维护,配合参数验证使用更安全…