我是靠谱客的博主 无语书包,这篇文章主要介绍python全栈开发技巧_Python 全栈开发:python初识面向对象,现在分享给大家,希望可以做个参考。

一、面向对象

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

面向过程编程

核心是”过程“二字,过程指的是解决问题的步骤,即先干什么再干什么

基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式

优点:复杂的问题流程化、进而简单化

缺点:可扩展性差

面向过程

优点:解决程序的扩展性,可扩展性强

缺点:1.编程的复杂度高于面向过程

2.可控性差,无法像面向过程一样精准的预测问题的处理流程与结果

应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方

二、类和对象

对象是特征与技能的结合体,那类就是一系列对象相同的特征与技能的结合体

类:具有相同属性特征的一类事物

对象:具体的某一事物

在现实世界中:先有对象,再有类

在程序中:务必保证:先定义类,后调用类来产生对象

程序中模板

#1. 在程序中特征用变量标识,技能用函数标识

#2. 因而类中最常见的无非是:变量和函数的定义

#3. 在定义类的阶段会立刻执行类体内的代码,然后将产生的名字存放于类名称空间中

#4. __init__ 不能有返回值

class类名:def __init__(self,参数1,参数2):

self.对象的属性1=参数1

self.对象的属性2=参数2def 方法名(self):pass

def 方法名2(self):pass对象名= 类名(1,2) #对象就是实例,代表一个具体的东西

#类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法

#括号里传参数,参数不需要传self,其他与init中的形参一一对应

#结果返回一个对象

对象名.对象的属性1 #查看对象的属性,直接用 对象名.属性名 即可

对象名.方法名() #调用类中的方法,直接用 对象名.方法名() 即可

注意点:

类中可以有任意python代码,这些代码在类定义阶段便会执行

因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过类名.__dict__查看

对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但python为我们提供专门的.语法

点是访问属性的语法,类中定义的名字,都是类的属性

python为类内置的特殊属性

类名.__name__#类的名字(字符串)

类名.__doc__#类的文档字符串

类名.__base__#类的第一个父类(在讲继承时会讲)

类名.__bases__#类所有父类构成的元组(在讲继承时会讲)

类名.__dict__#类的字典属性

类名.__module__#类定义所在的模块

类名.__class__#实例对应的类(仅新式类中)

python类定义阶段,每一个类的方法必须显示定义self

ps:def __init__(self): 这句话可以写也可以不写,只要有参数参进来的时候就必须得写

def 方法名(self):这里的self必须得写

三、类的实例化、对象的操作

类实例化:调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或称为一个实例

#定义一个People类

classPeople:def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sexdefrun(self):print('%s is running' %self.name)#实例化一个对象 obj

obj = People('fixd',18,'male')

实例化做的三件事:

先产生一个空对象

自动触发类内部的__init__函数的执行

将空对象,以及调用类括号内传入的参数,一同传给__init__,为对象定制独有的属性

查看对象的名称空间(__dict__)

print(obj.__dict__)

四、对象的操作

print(obj.name) #查看 属性name的值

obj.education='哈佛' #添加属性

del obj.name #删除属性

obj.age=19 #修改属性值

print(obj.__dict__) #查看实例化对象的名称空间

五、对象属性的查找顺序

先找对象自己的名称空间----------->>类的名称空间

1、类的数据属性:是给对象用的,而且直接共享给所有对象的用的,内存地址都一样

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#定义一个People类

classPeople:

country= 'China'

def __init__(self, name, age, sex):

self.name=name

self.age=age

self.sex=sexdefrun(self):print('%s is running' %self.name)

people1= People('fixd01', 18, 'male')

people2= People('fixd02', 25, 'male')

people3= People('fixd03', 30, 'male')#实例化三个对象

people1 = People('fixd01',18,'male')

people2= People('fixd02',25,'male')

people3= People('fixd03',30,'male')#查看country属性对应的 内存地址

print(id(People.country))print(id(people1.country))print(id(people2.country))print(id(people2.country))###############################结果:id 值都是相同的#140238495738936#140238495738936#140238495738936#140238495738936

类的数据属性是共享的

2、类的函数属性:是给对象调用,但是绑定给对象的用的,绑定到不同的对象就是不同的绑定方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#定义一个People类

classPeople:

country= 'China'

def __init__(self, name, age, sex):

self.name=name

self.age=age

self.sex=sexdefrun(self):print('%s is running' %self.name)#实例化三个对象

people1 = People('fixd01', 18, 'male')

people2= People('fixd02', 25, 'male')

people3= People('fixd03', 30, 'male')#调用 run()方法

people1.run()

people2.run()

people3.run()#查看run 的内存地址

print(people1.run)print(people2.run)print(people3.run)#

###############################结果: 内存地址不同

fixd01 isrunning

fixd02isrunning

fixd03isrunning###############################结果: 内存地址不同

>

>

>

类的函数(绑定方法)

六、绑定方法的特殊之处

绑定给谁就应该由谁来调用

谁来调用就会把谁当做第一个参数传入

七、一切皆对象

在python3中统一了类与类型的概念,类即类型。

最后

以上就是无语书包最近收集整理的关于python全栈开发技巧_Python 全栈开发:python初识面向对象的全部内容,更多相关python全栈开发技巧_Python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部