面向对象

一、面向对象简单介绍:

 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. 纤程(FIBER)

    Indy 10 还包含对纤程的支持.纤程是什么?简单来说,它也是 一个“线程”,但是它是由代码控制的,而不是由操作系统控制的.实际上,可以认为线程 是一个高级纤程.纤程和 Unix 用户线程(Unix ...

  2. JSTL简单入门学习实例

    Maven依赖: <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</ ...

  3. EXCEL单元格的获取——多例模式

    因为Excel的单元格的行列与单元格是一一相应的,行与列组成的是一对联合主键.给定一个单元格行列或者给定一个单元格名称.须要找到相应的单元格:这样就形成了一种映射关系.须要使用单例模式的变式--多例模 ...

  4. hbase shell经常使用命令

    hbase经常使用命令 /usr/local/cloud/hbase/bin/hbase shell 用shell来连接hbase exit 退出hbase shell version 查看hbase ...

  5. ios打地鼠游戏源代码

    打地鼠游戏源代码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源代码,这也是一款高质量的打地鼠游戏源代码,能够拥有逐步上升的关卡的设置,大家能够在关卡时设置一些商业化的模式来盈利的,很完美的 ...

  6. mybatis之if else语句

    最近项目中遇到一个相同表设计,但是表名不同的sql语句操作. 在遇到这样的情况时候可以用一下方式: <choose> <when test=""> //.. ...

  7. 【bzoj3208】花神的秒题计划Ⅰ

    记忆化搜索 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib ...

  8. 在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)

    为了能中一个系统上开发64或32位C++程序,费了些周折,现在终于能够开始干过了.在此记录此时针对Q5.4版本的32位开发环境配置过程. 1. 下载Qt 5.4 的32位版本,进行安装,安装过程中会发 ...

  9. Spring Boot Controller

    接上篇文章.HelloWorld程序中我们已经创建了一个HellController,里面包括了响应JSON的方法.本文针对Controller再做一下解说. 回想上篇文章,我们在Controller ...

  10. MPEG2、MPEG4、H264的差异

    iso(国际标准化组织) MPEG系列 ITU-T(国际电联)h.系列 H.264:iso与ITU联合制定,数据压缩比超牛! MPEG-2简介 MPEG-2制定于1994年,设计目标是高级工业标准的图 ...