Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
面向对象
一、面向对象代码示例:
1 class Test(): #类的定义
2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果
3 def __init__(self): #构造方法
4 self.name = 1 #成员变量,可以在类的不同方法间调用,也可以由类创建的对象进行调用
5 print("name=",self.name)
6
7 def say(self): #类方法必须包含参数self,且为第一个参数
8 address = "china" #方法中的局部变量
9 print("address=",address)
10
11 self.address = address #局部变量可以在类方法间使用
12
13 def cry(self):
14 print(self.address) #打印上面局部变量
15
16 @staticmethod #静态方法可以被类名直接调用
17 def fun1():
18 print("我是静态方法")
19
20 t = Test() #t为类创建的对象
21 # print(t.car) #打印类变量
22 t.say()
23 t.cry()
24 Test.fun1()
25 #方法(函数)、类变量、成员变量(init)、局部变量(def)
二、类的继承,子类可以使用父类的方法,父类不可以使用子类的方法
三、方法重写:调用最新的方法
1 class Parent():
2 def myMthod(self):
3 print("父类的方法")
4
5 class Cjild(Parent):
6 def myMthod(self):
7 print("子类的方法")
8
9 c = Cjild()
10 c.myMthod() #先调用自己的方法,也叫做方法重写
四、私有变量和方法
1 class Info():
2 def __init__(self):
3 self.__name = 'xiaojia' #私有变量(一般只能在类内部使用)
4
5 def say(self):
6 print(self.__name) #类的内部调用
7
8 a = Info()
9 # print(a.__name) #类的外部调用报错,无法调用
10 print(a._Info__name) #注意:可以用a._Info__name这样的方式在类的外部调用,这就是python的灵活性
迭代器
#迭代器一次返回一个成员
list1 = [1,2,3,4]
it = iter(list1) #创建一个对象并赋值给it
print(next(it)) #
print(next(it)) #
print(next(it)) #
print(next(it)) #
range和切片的比较:
range:
1 range(strat,end,step)
2 range(4) range(0,4) range(0,4,1)
3 range(-3,3)
4 range(3,-3,-1)
5
6 range(-3,3,-1) #输出为空
7 range(0,4,-1) #输出为空
8 range(3,2,1) #输出为空
切片:
1 a[start,end,seq]
2 seq如果为正,从左往右走,如果start大于end显示为空
3 seq如果为负,从右往左走,如果start小于end显示为空
4 如果start为空,表示从头开始走
5 如果end为空,表示走到末尾
6 如果start和end都为空,取全部
如下 标记位:
# 0 1 2 3
# a b c d
# -4 -3 -2 -1
练习:
1 求圆的面积和周长
2 from math import pi
3 class Shape():
4 def getArea(self,r):
5 print("圆的面积是:%.2f"%(pi*(r**2)))
6
7 def getLong(self,r):
8 print("圆的周长是:%.2f"%(2*pi*r))
9
10 y = Shape()
11 y.getArea(5)
12 y.getLong(5)
1 统计员工信息和工资
2 class Employee:
3
4 count = 0
5 def __init__(self,name,salory):
6 self.name = name
7 self.salory = salory
8 self.count += 1
9
10 def emp_info(self):
11 print("name=",self.name,"salory=",self.salory)
12
13 def emp_count(self):
14 print("num=",self.count)
15
16 u = Employee('jia',100)
17 u.emp_count()
18 u.emp_info()
19 u = Employee('yannan',30000)
20 u.emp_count()
21 u.emp_info()
思考面向对象的执行顺序:
1 class Test():
2 s = "我是一个类变量,嘎嘎"
3
4 def __init__(self):
5 print("构造方法就是初始化,来一下")
6 self.a = 1 #可以由类创建的对象调用
7 self.b = 28
8
9 def __del__(self):
10 print("析构方法就是后期收拾残局的,我来")
11
12 def foo(self):
13 print("方法内的普通成员")
14
15 @staticmethod
16 def baba():
17 print("类的静态方法,我可以被类名直接调用哦,来来")
18
19 t = Test() #创建一个对象,对象啊对象
20 '''
21 思路:
22 init和del在类中仅且执行一次,init是初始化(先勤部队)del是收拾残局(后勤部队)
23 不管是几个方法的调用都会执行下init和del
24 '''
25 t.foo() #如果单独执行打印init和del,中间打印foo
26 Test.baba() #如果单独执行打印init和del,中间打印baba
27 print(Test.s) #如果单独执行打印init和del,中间打印s
28
29 #如果一起执行打印的顺序是:init、foo、baba、s、del
Python自动化--语言基础5--面向对象、迭代器、range和切片的区分的更多相关文章
- python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...
- Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者
1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...
- Python自动化--语言基础4--模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- Python自动化--语言基础3--字典、函数、全局/局部变量
字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...
- Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组
运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 % 取模(余数) // 取相除的整数部分 / (5/2=2.5) 比较运算符 == 等于 ! ...
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- python自动化--语言基础二运算符、格式化输出、条件语句、循环语句、列表、元组
运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符. 算术运算符 % 取模(余数) // 取相除的整数部分 / (5/2=2.5) 比较运算符 == 等于 ...
- Python自动化--语言基础8--接口请求及封装
基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...
- Python自动化--语言基础6--模块操作之re、MySQL、Excel
1.Python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("aaa ...
随机推荐
- JDBC 元数据 (DatabaseMetaData,ResultSetMetaData )
Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信息.根 ...
- 谷歌扩展程序设置ajax请求允许跨域(极少人知道的解决方案)
前言: 跨域问题一直是个老生常谈的问题,在实际开发过程中,跨域的问题常常会让开发者非常的头疼. 常用的几种跨域解决方案: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Lev ...
- Ubuntu16.04安装mongodb
Ubuntu16.04安装mongodb copy from: http://blog.csdn.net/zhushh/article/details/52451441 1.导入软件源的公钥 sudo ...
- mybatis属性详解
前言 MyBatis是基于"数据库结构不可控"的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转 ...
- struts文件异常Included file cannot be found
1.命名规范,都是采用struts-xxx.xml文件,即以struts开头 2.file的路径不要以/开头,在其他版本是以/开头的 <include file="/com/bjsxt ...
- Failed to load the JNI library "E:\JDK6.0\bin\client\jvm.dll"
在打开Eclipse是错误提示:Failed to load the JNI library "E:\JDK6.0\bin\client\jvm.dll" 如图1所示 图1 遇到这 ...
- java里程碑之泛型--类型通配符
1,泛型与数组在子类上面的对比 在整理java泛型的类型通配符之前,我们先来研究下java在数组设计上的一个不合理.我们来看下面代码: public class Test { public stati ...
- Servlet--取得初始化配置信息
关于这块内容,主要就是玩一个接口:ServletConfig.先翻下API,了解一下. 定义: public interface ServletConfig 这个接口定义了一个对象,通过这个对象,Se ...
- 基于Elasticsearch搜索平台设计
背景 随着公司业务的高速发展以及数据爆炸式的增长,当前公司各产线都有关于搜索方面的需求,但是以前的搜索服务系统由于架构与业务上的设计,不能很好的满足各个业务线的期望,主要体现下面三个问题: 不能支持对 ...
- [JLOI2011]基因补全
1973: [JLOI2011]基因补全 Time Limit: 1 Sec Memory Limit: 256 MB Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸), ...