python类

Python中类的定义与使用

安稳与你 提交于 2020-01-10 05:35:47
转载自https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138682004077376d2d7f8cc8a4e2c9982f92788588322000 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。 仍以Student类为例,在Python中, 定义类是通过 class 关键字 : class Student(object): pass class 后面紧接着是类名,即 Student ,类名通常是大写开头的单词,紧接着是 (object) ,表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。 定义好了 Student 类,就可以根据 Student 类创建出 Student 的实例, 创建实例是通过类名+()实现的 : >>> bart = Student() >>> bart <__main__.Student object at 0x10a67a590> >>> Student <class '__main__

python学习1-博客-DB操作类

自古美人都是妖i 提交于 2020-01-09 01:27:32
#学习python,准备写一个博客,第一天:在别人代码基础上写一个数据库操作的db.py1)python代码 #!/usr/bin/env python # -*- coding: UTF-8 -*- ''' v1.0 博客内容的添加、修改、删除、查看 ''' import pymysql import logging import sys import datetime,time # 加入日志 # 获取logger实例 logger = logging.getLogger("baseSpider") # 指定输出格式 formatter = logging.Formatter('%(asctime)s\ %(levelname)-8s:%(message)s') # 文件日志 file_handler = logging.FileHandler("baseSpider.log") file_handler.setFormatter(formatter) # 控制台日志 console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) # 为logger添加具体的日志处理器 logger.addHandler(file_handler) logger

python带参数的类装饰器

与世无争的帅哥 提交于 2020-01-09 01:26:33
摘自:https://www.cnblogs.com/zhzhang/p/11375774.html # -*- coding: utf-8 -*- # author:baoshan # 带参数的类装饰器(和不带参数的类装饰器有很大的不同) # 类装饰器的实现,必须实现__call__和__init__两个内置函数。 # __init__:不再接收被装饰函数,而是接收传入参数; # __call__:接收被装饰函数,实现装饰逻辑 class logger(object): def __init__(self, level='INFO'): self.level = level def __call__(self, func): def wrapper(*args, **kwargs): print("[{level}]: the function {func}() is running...".format(level=self.level, func=func.__name__)) func(*args, **kwargs) return wrapper @logger(level="WARNING") def say(something): print("say {}!".format(something)) say("hello")    来源: https://www

python 类的使用原则

你离开我真会死。 提交于 2020-01-07 20:34:14
Class 的继承分类 单继承链/无重叠的继承链/有重叠的继承链 class 的继承算法 深度优先算法 :        1. 把根节点压入栈中        2.每次从栈中弹出一个元素 ,搜索所有在它下一级的元素 ,将这些元素压入栈中 ,        3 重复 1和 2 C3算法: 公式: L(object)=[object] L(子类(父类1,.父类2))=[子类]+ merge(L(父类1,.父类2),[父类1,父类2]) merge算法 1 第一个列表的第一个元素是后续列表的第一个元素,或者后续列表中没有再次出现,则将这个元素合并到最终的解析列表中,并从当前操作的所有列表中删除 2. 如果不符合,则跳过此元素,查找下一个列表的第一个元素,重复1的判断规则 3. 如果最终无法把所有元素归并到解析列表,则报错 C3算法例子: import inspect class D: pass # L(D(object))= [D] + merge(L(object),[object]) # = [D] +merge(L[object],[object]) # = [D,object] + merge(L[], []) # = [D, object] class B(D): pass #L(B(object))= [B]+ merge(L(D),[D]) # = [B]+ merge(

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中模块、类、函数、实例调用案例

余生颓废 提交于 2020-01-07 13:13:11
19 a = '我是模块中的变量a' 20 21 def hi(): 22 a = '我是函数里的变量a' 23 print('函数“hi”已经运行!') 24 25 class Go2: 26 a = '我是类2中的变量a' 27 def do2(self): 28 print('函数“do2”已经运行!') 29 30 print(a) # 打印变量“a” 31 32 hi() # 调用函数“hi” 33 34 A = Go2() # 实例化“Go2”类 35 print(A.a) # 打印实例属性“a” 36 A.do2() # 调用实例方法“do2” 来源: https://www.cnblogs.com/Through-Target/p/12149149.html

python读取ini配置的类封装

半世苍凉 提交于 2020-01-06 14:48:44
此为基础封装,未考虑过多异常处理 类 # coding:utf-8 import configparser import os class IniCfg(): def __init__(self): self.conf = configparser.ConfigParser() self.cfgpath = '' def checkSection(self, section): try: self.conf.items(section) except Exception: print(">> 无此section,请核对[%s]" % section) return None return True # 读取ini,并获取所有的section名 def readSectionItems(self, cfgpath): if not os.path.isfile(cfgpath): print(">> 无此文件,请核对路径[%s]" % cfgpath) return None self.cfgpath = cfgpath self.conf.read(cfgpath, encoding="utf-8") return self.conf.sections() # 读取一个section,list里面对象是元祖 def readOneSection(self, section):

python读取ini配置的类封装

。_饼干妹妹 提交于 2020-01-06 01:27:55
此为基础封装,未考虑过多异常处理 类 # coding:utf-8 import configparser import os class IniCfg(): def __init__(self): self.conf = configparser.ConfigParser() self.cfgpath = '' def checkSection(self, section): try: self.conf.items(section) except Exception: print(">> 无此section,请核对[%s]" % section) return None return True # 读取ini,并获取所有的section名 def readSectionItems(self, cfgpath): if not os.path.isfile(cfgpath): print(">> 无此文件,请核对路径[%s]" % cfgpath) return None self.cfgpath = cfgpath self.conf.read(cfgpath, encoding="utf-8") return self.conf.sections() # 读取一个section,list里面对象是元祖 def readOneSection(self, section):

python类与对象

余生颓废 提交于 2020-01-03 06:30:27
类与对象 创建类 通过关键字class创建一个Player类,来个栗子 class Player: pass 创建对象 通过类实例化两个对象,来个栗子 class Player: pass p1 = Player() p2 = Player() print(p1) #<__main__.Player object at 0x00000000020E2198> print(p2) #<__main__.Player object at 0x00000000020E2E48> 添加属性 举个栗子 class Player: pass p1 = Player() p1.name = "tom" p1.lives = 3 print(p1.name, p1.lives) #tom 3 面向对象的重点在于不同对象之间的交互 为类添加一些行为,当这些行为触发时,可以改变对象的属性,举个栗子 class Player: def add_one_live(self): self.lives += 1 p = Player() p.lives = 3 p.add_one_live() print(p.lives) #4 参数self self是对方法所调用对象的引用 类中定义的函数,其第一个形参一般都要显示的传入self,否则在通过类实例调用函数时会报错 class Player: def add

【Python学习之旅】---多态(类的相关知识)

こ雲淡風輕ζ 提交于 2020-01-01 22:43:36
#多态反应的是执行时候的状态,不同对象调用的相同方法,调用同一个类,但运行结果不一样,属于继承的一种体现机制。class H2O: def __init__(self,name,wendu): self.name=name self.wendu=wendu def turn_ice(self): if self.wendu < 0: print('【%s】温度太低成冰了' %self.name) elif self.wendu > 0 and self.wendu <100 : print('【%s】温度太高融成水了' %self.name) else: print('【%s】温度太高成蒸汽了' %self.name)w1=H2O('水',20) #水实例化i1=H2O('冰',-2) #冰实例化z1=H2O('蒸汽',1000) #蒸汽实例化w1.turn_ice() #水调用H2O的方法i1.turn_ice() #冰调用H2O的方法z1.turn_ice() #蒸汽调用H2O的方法def fun(obj): #将重复调用的代码用函数来实现 obj.turn_ice() #任一一对象调用此方法fun(z1) #传入对象#执行结果: 【水】温度太高融成水了 【冰】温度太低成冰了 【蒸汽】温度太高成蒸汽了 【蒸汽】温度太高成蒸汽了 来源: https://www.cnblogs