cls

python学习之面向对象高级特性和魔术方法

随声附和 提交于 2020-01-10 18:06:24
01_property商品应用.py 分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。 类属性应用需求: 对于京东商城中显示电脑主机的列表页面,每次请求不可能把数据库 中的所有内容都显示到页面上,而是通过分页的功能局部显示,所以在向数据库中请求 数据时就要显示的指定获取从第start条到第end条的所有数据 这个分页的功能包括: • 根据用户请求的当前页和总数据条数计算出 start 和 end • 根据start 和 end 去数据库中请求数据 • 是否有上一页has_prev、下一页has_next • 上一页prev、下一页next • 总页数pages, 数据总条数total、当前页信息items """ class Pagintor(object): """实现商品分页的类""" def __init__(self, objects_list, page=1, per_page=5): """ :param objects_list: 商品列表 :param page: 当前需要显示的页码信息 :param per_page: 每页显示的数据个数 """ self.objects_list = objects_list self.page = page self.per_page = per_page @property def

Python--面向对象进阶

蹲街弑〆低调 提交于 2020-01-10 13:51:26
一、元类 元类是类的类,是类的模板;元类的实例为类,正如类的实例为对象。类也是对象。 类的本质是对象, 于是可以对类做如下的操作: 你可以将它赋值给一个变量 你可以拷⻉它 你可以为它增加属性 你可以将它作为函数参数进行传递 因为类也是对象,运行时在函数中使用class关键字动态的创建类。 1、通过分支语句动态的创建类 def create_class ( name ) : if name == 'foo' : class Foo ( object ) : pass return Foo else : class Bar ( object ) : pass return Bar cls = create_class ( name = 'foo1' ) print ( cls . __name__ ) Bar 2、通过type函数动态创建类 type函数功能一: 判断对象的类型。 type函数功能二: 动态的创建类。type可以接受一个类的描述作为参数,然后返回一个类。 type函数语法: type(类名,父类名称的元组, 属性信息) def hello ( self ) : print ( "hello" ) Person = type ( 'Person' , ( object , ) , { 'country' : 'China' , 'hello' : hello } ) p1

Python, mixing PyQt5 and abc.ABCMeta

本小妞迷上赌 提交于 2020-01-10 06:04:26
问题 I am trying to create an AbstractClass using both abc.ABCMeta and QObject as parents and cannot seems to make it work. Here is the Base class init. I have Pyqt5 and python 2.7 pyqtWrapperType = type(QObject) class ParamsHandler(abc.ABCMeta, pyqtWrapperType): def __init__(self, device_model, read_only=False): super(ParamsHandler, self).__init__() self.cmd_to_get_data = None self.device_model = device_model class ConfigParamsHandler(ParamsHandler): def __init__(self, device_model): super

Python 单例模式

风流意气都作罢 提交于 2020-01-10 00:26:22
单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师把其称为设计模式之一 单例模式保证了在程序的不同位置都可以且仅可以取到同一个对象的实例,如果实例不存在,会创建一个实例;否则返回这个实例。单例是一个类,可以为其提供相应的操作方法,便于管理。 应用场景: windows的任务管理器,只能打开一个; 网站的计数器,一般采用单例模式实现,否则难以同步; 多线程的线程池,便于对线程的控制; 应用程序的日志应用,一般是用单例模式,是由于共享的日志文件一直处于打开状态,只能有一个实例去操作; 。。。。。。 单例模式实现方法: 装饰器实现单例模式: def singleton(cls): _instance = {} def inner(*args,**kwargs): if cls not in _instance: _instance[cls] = cls(*args,**kwargs) return _instance[cls] return inner @singleton class Examples(object): def __init__(self,*args,**kwargs): pass examples1 =

Python语法速查: 8. 类与对象

最后都变了- 提交于 2020-01-07 19:16:34
/*--> */ /*--> */ 返回目录 本篇索引 (1) 类基本用法 (2) 类的进阶知识 (3) 类继承 (4) property (5) 描述符 (6) __slots__ (7) 元类 (1)类基本用法 使用面向对象编程有3个重要的好处:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。 Python中所有的类都是继承自object类(Python2中要使用__metaclass__=type声明,Python3中不用考虑),它提供了一些常用的方法(如__str__()等)的默认实现,在使用中可以不显式指出object。 因此以下三种定义类的方法都是可以的: class MyClass(object): pass class MyClass(): pass class MyClass: pass ● 类中的成员 供所有实例共享的变量称为“类变量”(class variables)。类的每个实例各自有的成员变量称为“特性”(attribute);而“属性”(property)有另外的含义,后面会详述。 由于以前Java中“属性”这个名词太深入人心,因此在不引起歧义的情况下,也常常把“特性”叫为属性。 类中定义的函数分为三种:实例方法(绑定方法)、类方法、静态方法。 以下为类中各种成员的定义: class Foo: a =

python-重写new方法

一世执手 提交于 2020-01-06 22:05:16
class MusicPlayer: def __init__(self): print("播放器初始化") def __new__(cls, *args, **kwargs): print("创建对象,分配空间") instance= super().__new__(cls) return instance player = MusicPlayer() print(player) 来源: CSDN 作者: dxm809 链接: https://blog.csdn.net/dxm809/article/details/103846463

cls和self的区别与使用

匆匆过客 提交于 2020-01-04 11:52:28
区别:self代表类的一个实例对象,cls代表类本身 class Person(object): def __init__(self, name, age): self.name = name self.age = age print('self:', self) # 定义一个build方法,返回一个person实例对象,这个方法等价于Person()。 @classmethod def build(cls): # cls()等于Person() p = cls("Tom", 18) print('cls:', cls) return p if __name__ == '__main__': person = Person.build() print(person, person.name, person.age) 来源: CSDN 作者: Heaven_Sensation 链接: https://blog.csdn.net/weixin_40539952/article/details/103829548

原生JS实现addClass,removeClass,toggleClass

左心房为你撑大大i 提交于 2019-12-31 11:52:22
<style type="text/css"> div.testClass{ background-color:gray; } </style> <script type="text/javascript"> function hasClass(obj, cls) { return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); } function addClass(obj, cls) { if (!this.hasClass(obj, cls)) obj.className += " " + cls; } function removeClass(obj, cls) { if (hasClass(obj, cls)) { var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)'); obj.className = obj.className.replace(reg, ' '); } } function toggleClass(obj,cls){ if(hasClass(obj,cls)){ removeClass(obj, cls); }else{ addClass(obj, cls); } } function toggleClassTest(){ var

原生JS实现增加删除class(addClass,removeClass,toggleClass)

ⅰ亾dé卋堺 提交于 2019-12-31 11:51:37
<!DOCTYPE html> <html> <head> <style type="text/css"> .night-mode{ background:#383838; color:#888888; } </style> <script type="text/javascript">//判断样式是否存在 function hasClass(ele, cls) { return ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); } //为指定的dom元素添加样式 function addClass(ele, cls) { if (!this.hasClass(ele, cls)) ele.className += " " + cls; } //删除指定dom元素的样式 function removeClass(ele, cls) { if (hasClass(ele, cls)) { var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); ele.className = ele.className.replace(reg, " "); } } //如果存在(不存在),就删除(添加)一个样式 function toggleClass(ele,cls){ if

面向对象之反射和内置方法

只愿长相守 提交于 2019-12-30 04:20:24
静态方法 静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点:   类方法必须有一个cls参数表示这个类,可以使用类属性   静态方法不需要参数 绑定方法:分为普通方法和类方法      普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定到对象       类方法:默认有一个cls对象传进来,并且可以被类和对象(不推荐)调用-----绑定到类 非绑定方法:静态方法:没有设置默认参数,并且可以被类和对象(不推荐)调用-----非绑定 1 class Student: 2 f = open('student', encoding='utf-8') 3 def __init__(self): 4 pass 5 @classmethod #类方法 :有个默认参数cls,并且可以直接使用类名去 6 #调用,还可以与类属性交互(也就是可以使用类属性) 7 def show_student_info_class(cls): 8 # f = open('student', encoding='utf-8') 9