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

面向对象

时间:2022-11-02 16:46:35浏览次数:51  
标签:__ stu1 name 对象 面向对象 Student print

面向对象编程思想

面向对象的核心思想:   数据与功能的绑定

# 1.面对过程编程 按照固定的流程解决问题。 # 2.面对对象编程 创造出一个个对象,至于结果什么的与我们无关 (python中一切皆对象):对象是一个容器


ps:以上两种方法无优劣之分,通常是相辅相成的

面向对象之类与对象

对象:  数据与功能的结合体                         核心是对象
类:    多个数据相同数据和功能的结合体               类的作用是为了节省代码
""" 
一个人是一个对象,一群人就可以看作人类
"""
程序中要产生对象需要先定义出类

 

类与对象的创建

python中一定要有类才能借助类产生对象

# 类的语法结构
class 类名:
     '''代码注释'''
     对象公共的数据
     对象公共的功能


# 1.class是定义类的关键字
# 2.类名命名时首字母要大写
# 3.数据是变量名与数据值的绑定
# 4.功能(方法)其实就是函数


# 类的定义和调用
    类在调用阶段就会执行类体内代码吗,但是属于类的局部名称空间。外界无法调用



# 例如:我们现在要写一个清华大学学生选课系统

class Student:
    # 对象公共的数据
    school_name = '清华大学'

    # 对象公共的功能
    def choice_course(self):
        print('学生选课功能')

print(Student.__dict__)   # 拿到的是整个名称空间里的所有东西,组织成列表形式
print(Student.__dict__.get('school_name'))   # 拿到了Student类名称空间中的school_name
print(Student.__dict__.get('choice_course')) # 拿到了Student类名称空间中的choice_course功能


# 面向对象中,类和对象访问数据或者功能,可以统一采用句点符
print(Student.school_name)
print(Student.choice_course)

"""调用类就会产生对象"""
# 类名加括号就会产生对象,每执行一次都会产生一个全新的对象
obj1 = Student()   # 内存地址都不相同
obj2 = Student()   # 变量名obj接收类名加括号后的返回值
obj3 = Student()

# 加括号调用的对象名称空间没有东西
print(obj1.__dict__)

# 可以通过类名点的方式修改,新增数据值
Student.school_name = '北京大学'
Student.age = 13
print(obj1.school_name)
print(obj1.age)

"""数据(属性名)和功能(方法)可以统称为属性"""

对象独有的数据和功能

独有的数据:

class Student:
    # 对象公共的数据
    school_name = '清华大学'

    # 对象公共的功能
    def choice_course(self):
        print('学生选课功能')


# 对象独有的数据
obj1 = Student()
obj2 = Student()

# 1.每个对象都手动添加数据
obj1.__dict__['name'] = 'tom'   # obj1添加一个名字tom
obj2.__dict__['name'] = 'jerry' # obj2添加一个名字jerry
print(obj1.__dict__)
print(obj1.name)
print(obj2.__dict__)
print(obj2.name)

# 2.将添加对象独有的数据代码封装成函数
def init(obj,name):
    obj.__dict__['name'] = name
stu1 = Student()
stu2 = Student()
init(stu1, 'tom')
init(stu2, 'jerry')
print(stu1.__dict__)
print(stu2.__dict__)

# 3.给学生student对象添加独有数据的函数,只有学生对象才有资格调用,传入参数变量名修改
class Student:
    school_name = '清华大学'

    def init(self,name):
        self.__dict__['name'] = name

    def choice_course(self):
        print('学生选课功能')
stu1 = Student()
Student.init(stu1, 'tom')
stu2 = Student()
Student.init(stu2, 'jerry')

# 4.init方法变形

class Student:
    school_name = '清华大学'

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

    def choice_course(self):
        print('学生选课功能')

stu1 = Student('tom')
print(stu1.__dict__)
print(stu1.name)

独有的功能:

class Student:
    school_name = '清华大学'

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

    def choice_course(self):
        print(f'学生{self.name}选课功能')

stu1 = Student('tom')

# 1.直接定义在全局的功能,(该函数不是Student对象独有的)
def eat():
    print('觅食')
stu1.eat = eat
print(stu1.__dict__)
stu1.eat()      # 调用eat方法

# 2.只能将函数放在类中,但类中的函数又不是对象公共的
"""定义在类里面的功能,默认就是绑定给对象使用的,谁调用该功能谁就是主人"""
Student.choice_course(stu1)    # 类调用需要自己传入参数
stu1.choice_course()           # 对象调用会自动将对象作为第一个参数传入

# 修改,新增对象内的数据值
stu1.name = 'hanser'   # 点的name属性存在修改,不存在新增

 

标签:__,stu1,name,对象,面向对象,Student,print
From: https://www.cnblogs.com/juzijunjun/p/16851506.html

相关文章

  • 面向对象的初识
    面向对象前戏之人狗大战面向对象编程思想面向对象重要理论面向对象代码实操对象的独有数据对象的独有方法今日内容详细人狗大战#编写代码简单的实现人打狗,狗咬......
  • 面向对象
    什么事面向对象面向对象(ObjectOriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应......
  • 面向对象编程
    内容概要面对对象核心思路编程思想面向对象之类与对象类与对象的创建对象独有的数据(属性)对象独有的功能(方法)面对对象核心思路我们如果没有对象的存在,我们有一些......
  • 面向对象编程
    面向对象编程一、面向对象之人狗大战'''推导思路:1.代码定义出人和狗2.将产生人和狗的字典封装成函数3.定义人打狗的动作,和狗咬人的动作(生命值=攻击力-生命值)4.解......
  • 面向对象
    面向对象1.面向对象程序设计概述面向对象程序设计(ObjectOrientedProgramming,OOP)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。面向对......
  • c++从入门到精通——面向对象初探以及友元函数、对象
    面向对象每个对象内存地址独一无二,空对象分配一个字节空间#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;classPerson{public://intm_A;voi......
  • C++面向对象高级开发(六)写好一个String类
    类的内部:public:构造函数、拷贝构造、拷贝赋值、析构函数的接口和辅助函数以及它的实现private:参数  类的外部:内联:inline构造函数:判断是否有初值:有初值:分配......
  • 面向对象编程
    1.对象Object对象的两个部分:属性、行为面向对象编程的三大特点:封装、继承、多态2.封装写程序的时候也可以采用封装的理念,对于一些内容我们不提供接口来使用它们,它们属......
  • C语言面向对象思想
     (17条消息)C语言面向对象思想_lzs_blog的博客-CSDN博客_c实现面向对象C语言面向过程的,而C++是面向对象的。l 面向过程,我认为过程就是步骤,是解决问题的按部就班。l......
  • Python学习五:面向对象设计程序
    文章目录​​一、引言​​​​二、对象​​​​定义​​​​三、类​​​​定义​​​​四、面向对象程序的设计特点​​​​三大基本特点:封装、继承、多态​​​​1.封装​......