python 面对对象基础
面向对象基础
面向对象编程(抽象)
回顾一下
面向过程编程(思想 )
流水线
优点:逻辑清晰(逻辑一步步的,系统)
缺点:扩展性差(上一个函数的输出是下一个函数的输入)
面向对象编程(思想)
对象: 特征和技能的结合体
面对对象编程:一个个对象进行交互
优点:扩张性非常强
缺点:逻辑非常复杂
类与对象
类(类别):一系列具有相同特征和技能的对象
现实世界中先有对象,后有类
# 定义学生
# 姓名: 猪瑞星
# 学号: 222222
# 学校: oldboy
# 技能:选课,三十六变
# 姓名: 孔悟空
# 学号: 111111
# 学校: oldboy
# 技能:选课,七十二变
# 姓名: 雷公
# 学号: 666666
# 学校: oldboy
# 技能: 教课,piao
# 定义老师
# 姓名: tank
# 学校: oldboy
# 技能: 教课,piao
# 姓名: nick
# 学校: oldboy
# 技能:教课,看书
python中先有类,再有对象
class 类名(驼峰体): # 定义类,会直接运行类体内的代码
# 定义一系列特征
# 定义一系列方法
对象1 = 类名() # 实例化出对象
给对象定制独有的特征
class OldBoyStudent:
school = 'oldboy'
def __init__(self,name,age):
self.name = name
self.age = age
def choose_course(self):
print(' is choosing course')
stu1 = OldBoyStudent('gll',18)
stu1.school
stu2 = OldBoyStudent('nick',18)
stu2.school
对象的属性查找顺序
# 局部存在
class OldBoyStudent:
school = 'oldboy'
name ='nick'
def __init__(self,name,age):
self.name = name
self.age = age
def choose_course(self):
print('is choosing course')
stu1 = OldBoyStudent('gll',18)
print(stu1.name) # gll
stu2 = OldBoyStudent('nick',18)
print(stu2.name) # nick
# 局部找不到
class OldBoyStudent:
school = 'oldboy'
name ='nick'
def __init__(self,name,age):
#self.name = name
self.age = age
def choose_course(self):
print('is choosing course')
stu1 = OldBoyStudent('gll',18)
print(stu1.name) # nick
stu2 = OldBoyStudent('nick',18)
print(stu2.name) # nick
类与对象的绑定方法
class OldBoyStudent:
school = 'oldboy'
def __init__(self,name,age):
self.name = name
self.age = age
def choose_course(self):
print(id(self)) #1983522658680
print(self.school)
print(f'{self.name} is choosing course')
print(name)
stu1 = OldBoyStudent('gll',18)
stu1.choose_course() # self 是对象本身
print(id(stu1)) #1983522658680
OldBoyStudent.choose_course(stu1)
# 注:
# 针对类而言:choose_course里的self就是传的参数
# 针对对象而言:choose_course里的self就是对象本身
类与数据类型
lis = [1,2,3]
lis2 =list([1,2,3])
# 下面两式等同,理解参数self的概念
lis.append(4) # self自动传lis
# lis2.append(lis,4) # 手动传lis
对象的高度整合
在类里面封装了一大堆特征/数据,然后又封装了一大堆方法(方法用来专门用来操控这些数据的),并且在这基础上对于不同对象,这些属性和方法有不一样
class Animal:
def __init__(self,attri,height,weight):
self.attri = attri
self.height = height
self.weight = weight
def jiao(self):
print('self.attr,'开始叫了')
def eat(self):
print('self.attri,'开始吃饭了')
people = Animal('人类',180,140)
dog = Animal('狗',100,50)
people.eat()
dog.jiao()
python 面对对象基础的更多相关文章
- Python - 面对对象(基础)
目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代 ...
- Python - 面对对象(进阶)
目录 Python - 面对对象(进阶) 类的成员 一. 字段 二. 方法 三. 属性 类的修饰符 类的特殊成员 Python - 面对对象(进阶) 类的成员 一. 字段 字段包括:普通字段和静态字段 ...
- 16、python面对对象之类和继承
前言:本文主要介绍python面对对象中的类和继承,包括类方法.静态方法.只读属性.继承等. 一.类方法 1.类方法定义 使用装饰器@classmethod装饰,且第一个参数必须是当前类对象,该参数名 ...
- Python - 面对对象(其他相关,异常处理,反射,单例模式,等..)
目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2. ...
- 小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系)
小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系 1. 依赖关系. 最轻的一种关系 在方法中引入另一个类的对象 class Elephant: def __init__(sel ...
- 小学生绞尽脑汁也学不会的python(面对对象-----成员)
小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...
- 15、python面对对象之类和对象
前言:本文主要介绍python面对对象中的类和对象,包括类和对象的概念.类的定义.类属性.实例属性及实例方法等. 一.类和对象的概念 问题:什么是类?什么是实例对象? 类:是一类事物的抽象概念,不是真 ...
- python面对对象编程----2:__init__
面对对象编程估计我们最早接触到的就是__init__了,也就是实例的初始化处理过程: 1:来看看最基础的__init__ class Card(object): #抽象类Card,并不用于实例化 de ...
- python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法
一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...
随机推荐
- Codeforces 161A(贪心)
要点 我在想贪心是对的那要二分图何用,自己的想法是:二分图最开始并不知道怎么匹配最好所以就按输入顺序连了,之后慢慢修改:而这道匹配也成对匹配但从一开始你就可以知道选哪个最划算,就是贪心地选最小的.不必 ...
- codeforces772C
给一段序列,给你去掉所有数字的顺序,输出每去掉一个数,当前联通的子序列的最大值. 倒着来,每次插入一个数,然后求联通的最大值,线段树每个节点标记一下,区间的左右是否插入了数字,还有如果有数字从左边/右 ...
- idea svn操作
https://blog.csdn.net/bug_love/article/details/72875511
- (转)Linux内核参数设置sysctl命令详解
Linux内核参数设置sysctl命令详解 原文:https://www.zhukun.net/archives/8064 sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 ...
- 汉柏杯&&政治生日6月5日&&端午节
(一)汉柏杯 前不久汉柏杯2019年计算机设计大赛由我校承办,参加了软件应用开发组竞赛.开发了一个基于微信公众号的求职招聘系统,虽然很low但是貌似还是进了国赛,大概八月十号去安徽芜湖参加国赛决赛.据 ...
- springcloud-Netflix创建服务消费者
目录 springcloud-Netflix创建服务消费者 Ribbon 创建服务消费者-Ribbon方式 ribbon的架构 Feign 创建包和基本项目结构 创建Feign访问服务的接口和访问co ...
- 在Unity3d中解析Lua脚本的方法
由于近期项目中提出了热更新的需求,因此本周末在Lua的陪伴下度过.对Lua与Unity3d的搭配使用,仅仅达到了一个初窥门径的程度,记录一二于此.水平有限,欢迎批评指正. 网络上关于Lua脚本和Uni ...
- Java基础语法(方法)
Java基础语法 今日内容介绍 u 方法 第1章 方法 1.1 方法概述 在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法. 如:小明同学在路边准备坐车来学校学习.这就面临着一件事情( ...
- swift 基础-4
函数:完成特定任务的代码块,通过名字来表示函数做什么 func 函数名(形参:形参类型)->返回类型 command +option+0 隐藏右边的框 //定义函数 func sayHello( ...
- 2、HTTP状态码
HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...