面向对象

一、面向对象简单介绍:

 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. 百度语音识别API初探

    近期想做个东西把大段对话转成文字.用语音输入法太慢,所以想到看有没有现成的API,网上一搜,基本就是百度和讯飞. 这里先看百度的 笔者使用的是Java版本号的 下载地址:http://bos.nj.b ...

  2. Linux学习系列之memcached

    memcached简介 一.memcached是什么 memcached是一个开源的.支持高性能.高并发的分布式内存缓存系统 mem+cache+daemon:分布式内存缓存守护进程 memcache ...

  3. golang time.Duration()的问题解疑

    原文:  How to multiply duration by integer? 看到golang项目中的一段代码, ---------------------------------------- ...

  4. sh变更权限

    添加权限 假设您创建一个 “Hello world” 的 shell 脚本.当您第一次创建脚本时,它通常是不可执行的.使用 chmod 命令和 +x 选项添加执行权限,如清单 5 所示. 清单 5. ...

  5. 卸载MySQL 5.0

    昨天在Navicat for mysql中导入一个脚本,执行.出现乱码. 考虑到可能是版本号问题,就想卸载了又一次安装MYSQL,这一卸载倒是出了问题.导致安装的时候安装不上. 后来无意发现是卸载的时 ...

  6. C#程序如何把窗体文件从从一个项目中复制到另一个项目

    一个窗体有三个文件,全部拷贝到新的项目中   在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体)   重启这个项目,三个文件已经被识别出来了 ...

  7. Markdown 语法的简要规则

    标题 标题是每篇文章都须要也是最经常使用的格式,在 Markdown 中.假设一段文字被定义为标题,仅仅要在这段文字前加 # 号就可以. # 一级标题 ## 二级标题 ### 三级标题 以此类推,总共 ...

  8. .NET Core/.NET之Stream简介 Rx.NET 简介

    .NET Core/.NET之Stream简介   之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core ...

  9. 简单区分iphone和ipad的宏定义

    在公共头文件里作例如以下定义: #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 使用时: if( IS_I ...

  10. POJ 2629:Common permutation

    Common permutation Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5510   Accepted: 168 ...