python实例

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

好久不见. 提交于 2020-04-08 12:26:48
1. 类对象和实例对象   Python 中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间。类对象具有以下两种操作: 可以通过“类名()”的方式实例化一个对象。 可以通过“类名.类属性”的方式来访问一个类属性。   如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化、实例化,即实例化对象是类对象实例化之后的产物。 class Person:# 声明一个类对象 pass p1 = Person()#声明一个实例对象 print(Person)#输出结果:<class '__main__.Person'> print(p1)#<__main__.Person object at 0x0000015F7F94D0F0> 2 类变量与实例变量 2.1 概念上的区别   类变量是指是指该类的所有实例说共有的数据,实例变量是该类每一个实例所特有的数据。这么说的话可能还是很抽象,我们拿人类(Person类)来打比方,人类能移动(move=True),这是每一个人(张三、李四)都能做的,所以我们可以说人类能移动,张三能移动,李四也能移动,这里的移动(move)就是一个类变量。但每一个人都可能有不同的姓名(name)和年龄(age),张三可能20岁,李四可能30岁,但是我们不能说人类(Person)都是20岁或30岁

Python中的类方法、实例方法、静态方法

非 Y 不嫁゛ 提交于 2020-04-08 12:24:45
类方法 @classmethod 在python中使用较少,类方法传入的第一个参数是 cls,是类本身; 类方法可以通过类直接调用或者通过实例直接调用,但无论哪种调用方式,最左侧传入的参数一定是类本身。 通常情况下,类方法使用 @classmethod 装饰器来声明 实例方法 实例方法需要将类实例化后调用,如果使用类直接调用实例方法,需要显式的将实例作为参数传入;使用实例调用则不需要。 最左侧传入的参数 self,是实例本身。 静态方法 @staticmethod 指类中无需实例参与即可调用的方法(不需要 self 参数),在调用过程中个,无需将类实例化,直接在类之后使用“.”运算符调用。 通常情况下,静态方法使用 @staticmethod 装饰器来声明。 未完待续... 来源: https://www.cnblogs.com/0820LL/p/9983118.html

python学习日记(OOP——静态方法和类方法)

时光总嘲笑我的痴心妄想 提交于 2020-04-08 12:23:28
classmethod 类方法在Python中使用比较少,类方法传入的第一个参数为cls,是类本身。并且,类方法可以通过类直接调用,或通过实例直接调用。但无论哪种调用方式,最左侧传入的参数一定是类本身。 通常情况下,类方法使用@classmethod装饰器来声明 当这个方法的操作只涉及静态属性的时候 就应该使用@classmethod来装饰这个方法 class Goods(object): __discount = 0.8#自定义商品折扣 def __init__(self,name,price): self.name = name self.__price = price @property def price(self): return self.__price*Goods.__discount @classmethod def set_discount(cls,value): cls.__discount = value apple = Goods('apple',5) print(apple.price) Goods.set_discount(0.5) #类直接调用 # apple.set_discount(0.1) #实例直接调用 print(apple.price) staticmethod 静态方法是指类中无需实例参与即可调用的方法( 不需要self参数 )

Python学习第一天-第2节

爱⌒轻易说出口 提交于 2020-04-07 07:23:10
*本节课内容参见:https://www.cnblogs.com/jin-xin/articles/7459977.html 运行第一个Python程序 print('hello world') 将文本文件保存为以.py结尾的文件,如hello_world.py ,在终端中,运行命令:Python hello_world.py,在终端中显示“hello world” Python2.x与Python3.x在终端中运行Python文件的方法一样,即: Python+空格+Python文件 (与终端不在一个工作目录下是,需要加上Python文件的路径) #同时装有Python2和Python3时,应当把Python2的运行文件(即EXE文件)修改为Python2.exe,在终端中可以区分用的是哪个版本的Python运行的文件 变量 定义:将运算的中间结果暂时存储到内存上,以便后续代码调用 变量名 含义:变量名是指向内存中变量的名称,当变量没有指向其的变量名时,该变量将通过垃圾回收机制被释放掉 变量名命名的要求:1.必须由数字、字母、下划线的任意组合构成,且不能以数字开头;2.不能是Python中的关键字;3.具有可描述性(非强制性,不会报错);4.不能是中文或者是拼音(非强制,不会报错);5.变量名不能太长(非强制,不会报错)     #如果变量名报错,只用看违反了第一条还是第二条

Python学习笔记二——数据类型及数据操作

给你一囗甜甜゛ 提交于 2020-04-07 05:36:11
概要 : 基本语法 输出格式、 变量 、注释 数据类型 Numbers (数字)、String (字符串)、List (列表)、Tuple(元组)、Cictionary(字典) 及各个数据类型的常用方法和内置函数 、多维数组等 数据操作 切片操作 、回文算法 基本语法 - 输出格式 : Python的输出语法和Swift 的输出一样 1 # 输出 2 print("Hello Python") 注释 : Python中单行注释采用 # 开头。 python中多行注释使用三个单引号 ''' 或三个双引号 """ 变量 : Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建 Python允许你同时为多个变量赋值, 也可以为多个对象指定多个变量。例如: 1 a = b = c = 1 2 3 # 多变量赋值 4 a, b, c = 1, 2, "jun" 标准数据类型 有五个标准的数据类型: Numbers (数字) String (字符串) List (列表) Tuple(元组) Cictionary(字典) Number(数字) Number 是不可被改变的数据类型, 当你指定一个值时, Number 对象就会被创建 Python 支持四种不同的数值类型: int (有符号整型) long (长整型

使用Python的Scrapy框架编写web爬虫的简单示例

三世轮回 提交于 2020-04-07 04:53:55
在这个教材中,我们假定你已经安装了Scrapy。假如你没有安装,你可以参考这个 安装指南 。 我们将会用 开放目录项目(dmoz) 作为我们例子去抓取。 这个教材将会带你走过下面这几个方面: 创造一个新的Scrapy项目 定义您将提取的Item 编写一个 蜘蛛 去抓取网站并提取 Items 。 编写一个 Item Pipeline 用来存储提出出来的Items Scrapy由 Python 写成。假如你刚刚接触Python这门语言,你可能想要了解这门语言起,怎么最好的利用这门语言。假如你已经熟悉其它类似的语言,想要快速地学习Python,我们推荐 这种深入方式学习Python 。假如你是新手,想从开始使用Python学习,可以尝试去看看非程序员 Python资源列表 。 创造一个项目 在你要抓取之前,首先要建立一个新的Scrapy项目。然后进去你的存放代码目录,执行如下命令。 scrapy startproject tutorial 它将会创建如下的向导目录: 复制代码 代码如下: tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ... 这是一些基本信息: scrapy.cfg: 项目的配置文件。 tutorial/:

Python爬虫小实例:爬高校排名

十年热恋 提交于 2020-04-06 20:22:57
程序来源:中国大学MOOC网《 网络爬虫与信息提取课程 》。 程序目的:获取 大学排名网页 内容,并格式化输出。 读懂以下程序需提前了解requests库和BeautifulSoup库,在《 网络爬虫与信息提取课程 》有提供相关知识。 from bs4 import BeautifulSoup import bs4 import requests def getHTMLText(url): try: r = requests.get(url) # 得到的r是一个包含服务器资源的Response对象 r.raise_for_status() # 如果状态码不是200,则抛出异常 r.encoding = r.apparent_encoding return r.text except: return '' def fillUnivList(ulist, html): soup = BeautifulSoup(html, 'html.parser') # 解析html文档的内容 for tr in soup.find('tbody').children: # 循环遍历'tbody'标签中的所有儿子标签或字符串 if isinstance(tr, bs4.element.Tag): # 如果是标签 tds = tr('td') # 找到该标签下的所有'td'标签,返回形式为列表

python学习之继承

走远了吗. 提交于 2020-04-04 09:44:35
class P(object): 'P class' def __init__(self): print('created an instance of',self.__class__.__name__) def foo(self): print('Hi,I am P-foo()')class C(P): def foo(self): P.foo(self) #子类的重写方法显式地调用基类方法 super(C,self).foo() #P.foo(self)等价super(C,self).foo()等价super().foo() super().foo() print('Hi,I am C-foo()')p=P()c=C()# print(p.__class__) # p所属的类名# print(P.__bases__) # 父类的父类# print(P.__doc__) # 父类的文档字符串# print('-'*50)# print(c.__class__) # c所属的类名# print(C.__bases__) # 子类的父类print('-'*50)# p.foo() #实例调用方法# c.foo() #子类调用基类的覆盖方法# P.foo(c) #调用未绑定的基类方法,把子类实例传参进去c.foo() 来源: https://www.cnblogs.com

Debian Linux下的Python学习——class

做~自己de王妃 提交于 2020-04-04 05:53:06
python的class与C++、C#的class相比,是有区别的。 1.python的class方法与普通的方法有一个区别:class方法必须有一个额外的参数名称,在调用class方法时不用为这个参数赋值,这个参数指对象本身,一般用self表示,self相当于C#的 this 。 2. 使用 __init__ 方法进行初始化实例,实例被创建的时候,会马上运行此方法( init前后都是双下滑线 )。 3. 使用__del__ 的方法来完成类似析购操作。它在对象消逝的时候被调用。将对象所占用的内存返回给系统,但是很难保证这个方法究竟在什么时候运行。如果你想要指明它的运行,你就得使用 del 语句。 如下: 4.python 的class默认拥有DocStrings,即class默认有__doc__属性(注意:doc前后都是双下划线) DocStrings是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。 自动化工具也可以从程序中提取文档。因此建议使用DocStrings。 来源: https://www.cnblogs.com/greenteaone/archive/2012/11/23/2784162.html

Python基础(序列化)

╄→尐↘猪︶ㄣ 提交于 2020-04-03 02:57:25
#pickling import pickle,json # d = dict(name='傻狗1',age=300,score=100) # d1 = pickle.dumps(d)#pickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个bytes写入文件 # print(d1)#b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x07\x00\x00\x00\xe5\x82\xbb\xe7\x8b\x971q\x02X\x03\x00\x00\x00ageq\x03M,\x01X\x05\x00\x00\x00scoreq\x04Kdu.' # with open('./dump.txt','wb') as f: # pickle.dump(d,f)#用另一个方法pickle.dump()直接把对象序列化后写入一个file-like Object # with open('./dump.txt','rb') as f: # d = pickle.load(f)#用pickle.load()方法从一个file-like Object中直接反序列化出对象 # print(d)#{'name': '傻狗1', 'age': 300, 'score': 100} #JSON #python对象转JSON #