python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象
一、面向对象简单介绍:
class Test(): #类的定义
car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果
def __init__(self): #构造方法
self.name = #成员变量,可以在类的不同方法间调用,也可以由类创建的对象进行调用
print("name=",self.name) def say(self): #类方法必须包含参数self,且为第一个参数
address = "china" #方法中的局部变量
print("address=",address) self.address = address #局部变量可以在类方法间使用 def cry(self):
print(self.address) #打印上面局部变量 @staticmethod #静态方法可以被类名直接调用
def fun1():
print("我是静态方法") t = Test() #t为类创建的对象
# print(t.car) #打印类变量
t.say()
t.cry()
Test.fun1()
#方法(函数)、类变量、成员变量(init)、局部变量(def)
二、类的继承,子类可以使用父类的方法,父类不可以使用子类的方法
三、方法重写:调用最新的方法
class Parent():
def myMthod(self):
print("父类的方法") class Cjild(Parent):
def myMthod(self):
print("子类的方法") c = Cjild()
c.myMthod() #先调用自己的方法,也叫做方法重写
四、私有变量和方法
class Info():
def __init__(self):
self.__name = 'xiaohan' #私有变量(一般只能在类内部使用) def say(self):
print(self.__name) #类的内部调用 a = Info()
# print(a.__name) #类的外表调用报错,无法调用
print(a._Info__name) #注意:可以用a._Info__name这样的方式在类的外部调用,这就是python的灵活性
迭代器
#迭代器一次返回一个成员
list1 = [,,,]
it = iter(list1) #创建一个对象并赋值给it
print(next(it)) #
print(next(it)) #
print(next(it)) #
print(next(it)) #
range和切片的比较:
range:
range(strat,end,step)
range() range(,) range(,,)
range(-,)
range(,-,-) range(-,,-) #输出为空
range(,,-) #输出为空
range(,,) #输出为空
切片:
a[start,end,seq]
seq如果为正,从左往右走,如果start大于end显示为空
seq如果为负,从右往左走,如果start小于end显示为空
如果start为空,表示从头开始走
如果end为空,表示走到末尾
如果start和end都为空,取全部
如下 标记位:
# 0 1 2 3
# a b c d
# -4 -3 -2 -1
练习:
求圆的面积和周长
from math import pi
class Shape():
def getArea(self,r):
print("圆的面积是:%.2f"%(pi*(r**))) def getLong(self,r):
print("圆的周长是:%.2f"%(*pi*r)) y = Shape()
y.getArea()
y.getLong()
统计员工信息和工资
class Employee: count =
def __init__(self,name,salory):
self.name = name
self.salory = salory
Employee.count += def emp_info(self):
print("name=",self.name,"salory=",self.salory) def emp_count(self):
print("num=",self.count) u = Employee('han',)
u.emp_count()
u.emp_info()
u1 = Employee('xiaobei',2)
u1.emp_count()
u1.emp_info()
思考面向对象的执行顺序:
class Test():
s = "我是一个类变量,嘎嘎" def __init__(self):
print("构造方法就是初始化,来一下")
self.a = #可以由类创建的对象调用
self.b = def __del__(self):
print("析构方法就是后期收拾残局的,我来") def foo(self):
print("方法内的普通成员") @staticmethod
def baba():
print("类的静态方法,我可以被类名直接调用哦,来来") t = Test() #创建一个对象,对象啊对象
'''
思路:
init和del在类中仅且执行一次,init是初始化(先勤部队)del是收拾残局(后勤部队)
不管是几个方法的调用都会执行下init和del
'''
t.foo() #如果单独执行打印init和del,中间打印foo
Test.baba() #如果单独执行打印init和del,中间打印baba
print(Test.s) #如果单独执行打印init和del,中间打印s #如果一起执行打印的顺序是:init、foo、baba、s、del
python自动化--语言基础五面向对象、迭代器、range和切片的区分的更多相关文章
- Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...
- 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 ...
随机推荐
- Elasticsearch学习系列之单模式下API的增删改查操作
这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...
- golang 跨平台编译——go 在windows上编译Linux平台的程序(Cross Compilation from Windows to Linux/Ubuntu)
Go Cross Compilation from Windows to Linux/Ubuntu I have GO 1.7 installed on my Windows 10. I create ...
- 标准ACL、扩展ACL和命名ACL的配置详解
访问控制列表(ACL)是应用在路由器接口的指令列表(即规则).这些指令列表用来告诉路由器,那些数据包可以接受,那些数据包需要拒绝. 访问控制列表(ACL)的工作原理 ACL使用包过滤技术,在路由器上读 ...
- mysql正则表达式及应用
mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个 ...
- 75. Autorelease机制及释放时机
Autorelease机制是iOS开发人员管理对象内存的好伙伴.MRC中.调用[obj autorelease]来延迟内存的释放是一件简单自然的事:ARC下,我们甚至能够全然不知道Autoreleas ...
- 通过uri呼起本地app
1.在Android本地app清单文件里配置 <activity android:name="com.mdj.ui.WelcomeActivity" android:scre ...
- linux switch_root
1 命令格式 switch_root newroot init 跳转到另外一个文件系统,并且把newroot作为新的mount tree,并且执行init程序. 2 特殊要求 newroot必须是一个 ...
- [Codeforces 986E] Prince's Problem
[题目链接] https://codeforces.com/contest/986/problem/E [算法] X到Y的路径积 , 可以转化为X到根的路径积乘Y到根的路径积 , 除以LCA到根的路径 ...
- 洛谷P1531 I Hate It
题目背景 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 题目描述 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的 ...
- win7 32位解决matlab out of memory问题
由于最近在做DL,matlab load数据时由于内存只有2G,会出现out of memory的情况,网上百度了下都是在xp下打开3GB来解决该问题,但是由于win7没有boot.ini无法在win ...