首页 > 其他分享 >面向对象

面向对象

时间:2023-06-25 16:48:14浏览次数:37  
标签:__ .__ name stu 面向对象 dict print

面向过程

面向过程就是先干什么后干什么,有顺序写,例如之前所写的ATM,就是面向过程。

优点:复杂问题简单化。缺点:扩展性比较差,其中一部分要修改,就要修改很多位置,牵一发而动全身。

对扩展性要求不高的地方可以使用面向过程。

面向对象

在生活中,对象就是“特征”和“技能”的结合体。

在过程中,对象就是属性(变量)和方法(函数和功能)的结合体。也就是功能和数据的结合体。

优点:扩展性强

缺点:复杂了

一般用于扩展性要求比较高的地方。

类的定义和对象的产生

类是对象相似“数据”与“功能”的集合体。

类体中最常见的就是“变量”和“函数”的定义,但是类体中也可包含任意其他代码。函数写在类里就叫方法。

并且需要先定义类,再调用类产生对象。(先想功能中共有的)

类体代码在定义阶段就会执行,会产生类的名称空间,调用阶段不会触发,因为在定义阶段就已经开始运行。会把类的名称空间绑定给__dict__属性,如何查看:类名.__dict__。

类的数据属性是共享给所以对象用的,大家访问的地址一样,类改值可以直接改,但是对象改类的值无法改,当对象中没有要改的值时,会自己造一个实例化,调用类。调用类:类名()。

定制对象自己独有的属性

类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用。

调用类会自动触发类里的__init__方法,然后会把得到的对象本身当成第一个参数自动传递。

名字查找顺序

属性的查找顺序分两大类:

类属性:在类里面定义就是类属性

对象属性:对象自己独有的属性

class Student():
    school = 'sh'

    def __init__(self,name,age):
        self.name = name
        self.age = age


# print(Student.__dict__)
stu = Student('lin','18')
print(stu.__dict__)  #{'name': 'lin', 'age': '18'}

# #类查看
# print(Student.school)  #sh
# #类增加
# Student.salsry = 20000
# print(Student.__dict__)
# #类修改
# Student.salsry = 28000
# print(Student.__dict__)
# #类删除
# del Student.salsry
# print(Student.__dict__)

#对象查看
print(stu.age)  #18
print(stu.name)   #lin
print(stu.school)   #sh   (这个比较特殊,当对象中没有时就会从类中找)
#对象增加
stu.salary = 20000
print(stu.__dict__)  #'name': 'lin', 'age': '18', 'salary': 20000}
#对象修改
stu.salary = 28000
print(stu.__dict__)  #{'name': 'lin', 'age': '18', 'salary': 28000}
#对象删除
del stu.salary
print(stu.__dict__)  #{'name': 'lin', 'age': '18'}

练习题

# 定义两个英雄类:
# 每个英雄初始化的数据有:昵称、生命值、法力、攻击力()
# 定义一个计数器,记录产生了多少个对象
class Heros():
    count = 0

    def __init__(self, name, HP, power, attack):
        self.name = name
        self.HP = HP
        self.power = power
        self.attack = attack
        Heros.count += 1

hero = Heros('angle','10000','1000','2000')
hero1 = Heros('di','20000','1000','5000')
print(hero.__dict__)
print(hero1.__dict__)
print(hero.count)

 

标签:__,.__,name,stu,面向对象,dict,print
From: https://www.cnblogs.com/YeeQX/p/17503257.html

相关文章

  • 面向对象
    面向对象面向过程面向过程:就是机械的思维方式,先干什么,在干什么,最后干什么,其核心就是过程代码案例,实现面向过程的例子:1.接受用户名和密码2.做逻辑处理,验证参数3.将数据写入文件中优点:把复杂的问题简单化,进而流程化缺点:扩展性差使用场景:对扩展性要求不高的地......
  • python基础day31 面向对象
    面向过程在支持面向对象的语言中,都有两大范式:1.面向过程;2.面向对象面向过程:核心就是过程二字,即是先干什么,再干什么,最后干什么,就是机械式的思维方式举例: 把大象放进冰箱需要几步? 1.把冰箱门打开2.把大象放进去3.关上冰箱门代码案例:实现面向过程的例子......
  • 类和面向对象编程
    一、两大范式支持面向对象的语言中,都有两大范式面向过程和面向对象1、面向过程:流程化、步骤化思维优点:复杂的问题简单化,进而流程化缺点:扩展性差,牵一发而动全身使用场景:对扩展性要求不高的地方,一般使用面向过程2、面向对象对象就是盛放数据"属性"和"方法"的结合体属性:简......
  • Python全栈工程师(7:面向对象高级进阶)
    面向对象高级语法部分类的字段、方法、属性经典类vs新式类Python2中:经典类--深度优先;新式类--广度优先Python3中:均为广度优先super()方法:抽象接口#/usr/bin/env.python#-*-coding:utf-8-*-importabcclassAlert(object):'''报警基类'''__metaclass__=abc.......
  • OOP面向对象第三阶段学习总结
    OOP面向对象第三阶段学习总结目录 · 前言 · 设计与分析 · 踩坑心得 · 改进建议 · 总结 一、前言不知不觉OOP学习就已经来到了尾声,也即将要步入大二,回头望来,总总令人感慨。第三阶段的学习主要包括,一些set和map的用法。更加抽象点的提升呢,就是对自身对于......
  • python入门(十):面向对象编程
    Python面向对象编程指南原文|大纲|首页在Python中,面向对象编程(Object-OrientedProgramming,简称OOP)是一种重要的编程范式。它允许我们通过创建对象、定义类和实现继承等概念来组织和管理代码。了解Python的面向对象编程对于编写可维护、可扩展和可重用的代码至关重要。......
  • 3、错误的面向对象
    1、滥用getter、setter方法在之前参与的项目开发中,我经常看到有同事定义完类的属性之后,就顺手把这些属性的getter、setter方法都定义上有些同事更加省事,直接用IDE或者Lombok插件(如果是Java项目的话)自动生成所有属性的getter、setter方法当我问起,为什么要给每个属性......
  • JAVA面向对象程序设计_PTA题目集07-11总结分析
    JAVA面向对象程序设计_PTA题目集07-11总结分析前言:天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为。所以动心忍性,增益其所不能。随堂检测在最末浅析。 题目集七:知识点:类间设计,类的设计。题量:一题,菜单计价五。难度:八个满分。 题目集八:知识点:类......
  • C++面向对象技术与C++课程设计任务书[2023-06-23]
    C++面向对象技术与C++课程设计任务书[2023-06-23]面向对象技术与C++课程设计任务书题目1 小型学籍管理系统班级 21060101~02 指导教师 耿军雪姓名 学号 地点 G1-203 完成时间 2023/6/262023/6/30【目的与要求】1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基......
  • Java—面向对象
    概念:面向对象编程——以类的方式组织代码,以对象的组织数据。1.类和对象类是一个模板:抽象,对象:一个具体的实例。2.方法就是函数。3.对象的引用引用类型:基本类型(8)对象是通过引用来操作的:栈——>堆。4.属性在Java里叫字段。5.对象的创建和使用必须使用new关键字构建对象,构......