骑士计划-python全栈 15 面对对象初识

初识面向对象:

  面向过程:

  优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可

  缺点:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身

  应用场景:一旦完成基本很少改变的场景。例Linux内核,Git以及apcaApache HTTPserserver等

  面向对象:

  优点:解决了程序的可扩展性,对某一个对象单独修改,会立刻反映到整个体系中,例:对游戏中一个人物参数的特征和技能修改都很容易

  缺点:可控性差(结果预测性差),无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果。

函数与面向对象:

1.函数封装一个功能,而面向对象封装多个相关的功能

2.面对对象比较抽象,它是一种思想,需要站在上帝的角度去理解

3.程序可扩展性,对象都是一个个独立的,耦合性,差异性

类 :指具有相同属性或者功能的一类实物(例人类,爬行类)

对象:是类的具体体现

结构上理解:面对对象:俩部分 

class A:  #定义一个类
    name = ‘alex‘ #  静态属性,静态变量,静态字段。

    def func1(self):  # 函数,动态属性,方法。
        pass

类的俩种作用:属性引用和实例化

属性引用:

class Person:   #定义一个人类
    role = ‘person‘  #人的角色属性都是人
    def walk(self):  #人都可以走路,也就是有一个走路方法
        print("person is walking...")

print(Person.role)  #查看人的role属性
print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

类名:

1.__dict__  作用:查看类中的所有所有属性和方法,不可以进行增删改

class Person:
    animal = ‘高级动物‘
    def work(self):
        print(‘人类都需要工作。。。‘)
print(Person.__dict__)    #类中的属性
print(Person.__dict__["animal"])    #通过__dict__方式 单独的属性及方法可以查,但是不能增删改

2.查看,(增删改)类中某个,某些属性  用万能的点

print(Person.animal)  # 查
# print(Person.language)
# Person.name = ‘alex‘  # 增
# print(Person.name)
# Person.animal = ‘低级动物‘ # 改
# del Person.walk_way  # 删
# print(Person.__dict__)

注意:可以通过Person.__dict__["work"](1)来执行类中的动态属性(方法),但是不建议这么做

实例化:类 名后加上括号,就会触发__init__(一种特殊函数)函数的运行,可以用它来为每个实例定制自己的特征

实例化过程内部经历三个阶段:

1.在类名后加上一个括号Person(“alex”,"man"),就会在内存中开辟一个对象空间

2.自动执行类中__init__方法,并且将对象空间自动传给self参数,其他参数(“alex”,"man")手动传入

3.执行__init__方法,给对象空间封装相应的属性

class Person:   #定义一个人类
    role = ‘person‘  #人的角色属性都是人
    def __init__(self,name,sex):
        self.name = name  # 每一个角色都有自己的昵称;
        self.sex = sex   #每个人都有自己的性别

    def walk(self):  #人都可以走路,也就是有一个走路方法
        print("person is walking...")

egg = Person("alex","man")    #具体实例化,创建具体的一个人物
print(egg.name)    #查看对象的名字
print(Person.role)  #查看人的role属性
print(Person.walk)  #引用人的走路方法,注意,这里不是在调用   

对象:

  对象操作对象空间:

    对象参看对象空间的所有属性 用__dict__

    对象操作对象的某个属性    用万能的点进行增改  使用del 进行删除属性

  对象操作类空间的属性:只能进行查

  对象操作类空间的方法(动态属性)

class Person:
    animal = ‘高级动物‘
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex
    def work(self):
        print(‘人类都需要工作。。。‘)
obj = Person("alex","man")
print(obj.__dict__) #查对象空间的属性
obj.name = "taibai"     #对象空间属性的改
obj.hobby = "打球"    #对象空间属性的增
del obj.sex     #将对象空间的sex属性删除
print(obj.animal)   #对象空间查看类空间中的属性
obj.work()  #对象操作类空间的方法

类名称空间与对象名称空间

1.对象空间为什么能调用类中的属性与方法,只能调用不能改变

  对象空间先从自己空间中找属性,对象空间没有此属性就会通过类对象指针从类中去找,如果类中找不到,会从父类中去找。

  对象只能查看类中的属性,不能对类中的属性进行增删改。

2.类不能调用对象的属性。

3.对象与对象之间不可以互相调用。

  同一类实例化出来的对象之间是不能互相访问的。但是不同类实例化的对象是有可能进行互相访问的

4.给对象封装属性:__init__ 任意位置

原文地址:https://www.cnblogs.com/yuncong/p/9527111.html

时间: 2024-07-31 23:58:55

骑士计划-python全栈 15 面对对象初识的相关文章

骑士计划-python全栈07 基础数据类型的补充

元组 如果元组中只有一个数据,且没有逗号,则该"元组"与里面的数据的数据类型是相同的 # tu = ("alex") #class str tu = (1) #class int # tu = (True) #class bool print(type(tu)) 列表 列表与列表之间可以相加 l1 = [1,2,3] l2 = ['alex','wusir'] l3 = l1 + l2 print(l3) #[1, 2, 3, 'alex', 'wusir'] 注意

Python全栈__函数的初识、函数的返回值、函数的参数

1.函数的初识 def关键字 空格 函数名(与变量名命名规则相同):英文冒号 函数体 执行函数:函数名+() 函数是以功能为导向的. def login(): pass def register(): pass 1 def my_len(): 2 l1 = [1, 2, 3, 1, 6, 9, 10] 3 count = 0 4 for i in l1: 5 count += 1 6 my_len() 2.函数的返回值 return: 1.函数中遇到 return 结束函数,下面代码不执行. d

Python全栈开发【基础二】

Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 1 class int(object): 2 """ 3 int(x=0) -> integer 4 int(x, base=10) -&g

Python全栈考试-部分试题(精选)

Python全栈考试(一) Python全栈考试(一) 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py   #必须在首行有 #!/usr/bin/env python3 指定执行语言 2.简述位.字节的关系 答:一个字节(byte)=8位(bit)  位为最小的单位 3.简述 ascii.unicode.utf-8.gbk 的关系 ascii:只能表示256个符号 unicode:万国码,各国都有 需要有2位

Python全栈开发【基础四】

Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 匿名函数 lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 匿名函数主要是和其它函数搭配使用 举例: 1 ########

python 全栈开发,Day30(第一次面向对象考试)

月考题: python 全栈11期月考题 一 基础知识:(70分) 1.文件操作有哪些模式?请简述各模式的作用(2分) 2.详细说明tuple.list.dict的用法,以及它们的特点(3分) 3.解释生成器(generator)与函数的不同,并实现且使用简单generator(3分) 4.如何理解lambda函数/表达式(2分) 5.a=10 b=20 def test(a,b): print(a,b) c = test(b,a) print(c) 上述代码中,打印出来的值a,b,c分别是什么

Python全栈之路_01

Python全栈之路 前言:因为Python主要是在Linux和widows操作系统上使用所以,首先就介绍Pyhton在这两个平台上的安装和一些基础知识 Linux系统下安装Pyhton 1.工具 虚拟机:VMware workstation 12 Pro Linux系统:CentOS 64 位 VMware虚拟机安装很简单就不说明了. 在虚拟机安装CentOS 需要注意的是: 运行内存分配1G左右即可 可以开机按F2进入bios界面boot目录下选择启动设备选择Hard Drive为优先启动位

python 全栈之路

python 全栈之路 一. python 1. Python基础知识部分 Python Python那点事 Python windows和linux下 安装 Python2,Python3 Python 开启入坑之路 Python 基本数据类型 Python 那些零碎的知识点 Python -函数 Python - 面对对象 Python - 模块 Python - 文件操作 Python - python中经常踩得的坑 2. Python - 网络编程 3. Python - 并发编程 二.

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护