面向对象

一、面向对象简单介绍:

 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和切片的区分的更多相关文章

  1. Python自动化--语言基础5--面向对象、迭代器、range和切片的区分

    面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...

  2. Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者

    1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...

  3. Python自动化--语言基础4--模块、文件读写、异常

    模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...

  4. Python自动化--语言基础3--字典、函数、全局/局部变量

    字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...

  5. Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 ! ...

  6. python自动化--语言基础四模块、文件读写、异常

    模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...

  7. python自动化--语言基础二运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符. 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 ...

  8. Python自动化--语言基础8--接口请求及封装

    基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...

  9. Python自动化--语言基础6--模块操作之re、MySQL、Excel

    1.Python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("aaa ...

随机推荐

  1. MongoDB小结01 - MongoDB简介

    我们为什么要去学习MongoDB MongoDB是一种强大.灵活.可扩展的数据存储方式. 丰富的数据模型 MongoDB是面向文档的数据库,不是关系型数据库.它将原来'行'(row)的概念换成了更加灵 ...

  2. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  3. docker: 通过docker方式安装jenkins

    1. docker pull jenkins 2. docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home:z -t jenkins ...

  4. Django学习系列之中间件

    中间件的定义 中间件是一个.一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件 中间件可以对进来的请求和出去的请求进行控制 中间件是一类 django请求生命周期 自定义中 ...

  5. android中单元測试中的断言assert的使用与扩展

    首先看一组对照,比方说我们要測试的结果是一个Linearlaout AssertJ Android: assertThat(layout).isVisible() .isVertical() .has ...

  6. js 获取文件本地路径

    1.代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  7. Angular Scope解析与应用

    Scope层级结构 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA== ...

  8. C中多线程开发

    1 引言  线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期.solaris是这方面的佼佼者.传统的 Unix也支持线程的概念,可是在一个进程(proce ...

  9. UGUI 实现Button长按效果(RepeatButton)

    Tag:加入了一个延迟,在button按下状态一段时间后再開始 repeate using UnityEngine; using UnityEngine.Events; using UnityEngi ...

  10. 8148和8127中的ezsdk和dvrsdk

    http://www.dajudeng.com/d2012081009b8a9d5de87101f69f31952c.html