Python面向对象编程入门指南

Python学习笔记-Day7

面积对象

面向对象编程(Object Oriented Programming,简称 OOP,面向对象程序设计)是一种程序设计思想。用面向过程的思想设计程序时,程序是一条条指令的顺序执行,当指令变得多起来时,它们可以被分隔成我们先前实验中讲解过的函数。而面向对象编程则是将对象视为程序的组成单元,程序的执行通过调用对象提供的接口完成。

类与对象

定义一个简单的类

class 类名: #初始化方法,然后函数在类中称为方法 def __init__(self): pass

类的使用

#定义一个类名为Dog class Dog: #初始化方法 def __init__(self, name, age): #设置对象的属性值 self.name = name self.age = age #定义了New_dog函数,在类中函数也称方法 def New_dog(self): print("Dog is {} ,year old {}".format(self.name, self.age)) #实例化Dog类,变成对象,然后赋值给dog dog = Dog("dahuang", 19) #通过实例化后的值,然后再访问里面的方法 dog.New_dog()
#定义一个类为Dog class Dog: # 初始化方法 def __init__(self,name): #添加对象的属性值 self.name = name #调用了repr魔术方法,只有在交互式都会触发该方法 def __repr__(self): #特殊方法 #print() 时自动调用 return 'Dog: {}'.format(self.name) dog = Dog("two dog") print(dog) print(dog.name)
class Dog: def __init__(self, name, age): self.name = name self.age = age def __str__(self): # ✅ 特殊方法 # print() 时自动调用 return f"Dog: {self.name}" def __pre__(self): # ❌ 这不是特殊方法! # 只是普通方法,不会自动调用 return f"Dog: {self.age}" dog = Dog("dahuang", 18) print(dog) # 自动调用 __str__()

封装

在面向对象的语言中,封装就是用类将数据和基于数据的操作封装在一起,隐藏内部数据,对外提供公共的访问接口。可以理解为API接口

#定义一个Dog的类 class Dog(object): def __init__(self, name): self.name = name #获取狗的名字的方法 def get_name(self): #返回的狗的名字为全部小写 return self.name.lower() #定义一个修改狗的名字的方法,可以通过传参数修改,value def set_name(self, value): self.name = value #狗的行为特征 def bark(self): print(self.get_name() + ' is making sound wowowowo') #定义一个Cat的类 class Cat(object): def __init__(self, name): self.name = name #获取猫的名字 def get_name(self): #修改猫的名字为全部小写 return self.name.lower() #修改猫的名字 def set_name(self, value): self.name = value #猫的行为特征 def mew(self): print(self.get_name() + 'is making sound mimimimi') #调用类之前先实例化成对象 #实例化 dog = Dog('DAhuang') #调用对象中的方法 print(dog.get_name()) #调用对象中的方法,通过这个方法来修改狗的名字 dog.set_name('er ha') #打印 print(dog.get_name()) dog.bark()

继承

可以快速创建新的类,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

  • 在 Python 中,object是所有类的根类
  • 当你定义一个类时,即使不显式指定,它也会默认继承自object
  • Python 3 中,class Animal:class Animal(object):是等价的
#继承 #object class Animal(object): def __init__(self,name): self.name = name def get_name(self): return self.name def set_name(self,name): self.name = name def make_animal(self): pass #继承父类的 class Dog(Animal): def make_animal(self): print(self.get_name() + ' is making sound wangwangwangwang') class Cat(Animal): def make_animal(self): print(self.get_name() + ' is making sound miaomiaomiaomiao') #实例化,并且赋值给dog dog = Dog('er ha') cat = Cat('jafeimao') #通过dog实例化后的对象,调用对象里的方法 dog.make_animal() cat.make_animal()

多继承

#创建一个类,然后命名为A class A(): #初始化方法 def __init__(self): #定义或者添加属性命名youzi self.name = 'youzi' #定义一个技能为Python def jinanA(self): print("-------------python-------------") #定义一个类为B class B(): #初始化方法 def __init__(self): self.age = 19 # 继承前者优先使用 def jinanB(self): print("-------------网络安全---------------") #定义一个类xueyuan,继承A和B的方法 class xueyuan(A, B): #初始化方法 def __init__(self): #调用父类A的初始化方法 #当子类继承多个父类时,Python不会自动调用所有父类的 __init__ 方法,需要手动调用 A.__init__(self) B.__init__(self) def Test(self): print('------------xueyuan---------------') #实例化类,变成对象 person = xueyuan() #通过对象调用类中的方法 person.jinanA() person.jinanB() person.Test()

多态

#!/usr/bin/env python3 class Animal(): def who(self): print("I am an animal") class Dog(Animal): def who(self): print("I am a dog") class Cat(Animal): def who(self): print("I am a cat") def Func(value): value.who() dog = Dog() cat = Cat() #利用函数,传入对象,这个实现的方法就是多态 Func(dog) Func(cat)

私有属性

私有属性privateprotected
名称私人的受保护的
用法__ 两个下划线代表私有的属性_ 一个下划线代表受保护的属性
class Myclass: def __init__(self): self._num1 = 0 self._num2 = 0 def __est(self): self._num1 += 1 print(self._num1) myclass = Myclass() #这里会提示找不到方法名,所以私有属性只有类中才能调用 myclass.__test() #这里受保护的可以直接修改,但是不建议这样做 myclass._num1 =10 print(myclass._num1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1026105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows批量启动exe的bat

echo off setlocal enabledelayedexpansion:: 切换到 UTF-8 模式,防止中文乱码 chcp 65001 >nulecho echo 程序状态检测工具 echo echo.:: ::在此处添加检测列表 :: call :CheckAndStart "D:\zcgk\env\Redis-x64-5.0.14.1\redis-server.exe":…

EmotiVoice:开源多情感TTS引擎

EmotiVoice:让机器“有情绪”地说话 你有没有想过,语音助手不仅能回答问题,还能在你说“我好累”时用温柔的语气回应?或者游戏角色在战败时真的流露出沮丧与不甘?这些不再是科幻桥段——随着情感化语音合成技术的发展&…

Python类属性与魔术方法全解析

Python学习笔记-Day8 类属性方法 类属性就是类的对象属性,也就是类中的变量 类方法就是类里面的函数,而类里的函数就是方法 类的属性 #定义一个类,然后名字是ANimal,里面的object可写可不写,因为在python3中&#xff0…

少儿编程Scratch3.0教程——05 事件积木(项目练习)

在上节少儿编程Scratch3.0教程——05事件指令(基础知识)课中,我们学习了事件积木的基础知识,这节课我们就来利用它们完成一个小游戏,环游世界。老规矩,我们先来看看做好的效果是什么样。在这个游戏中&#…

LobeChat能否召开虚拟会议?远程协作新模式

LobeChat能否召开虚拟会议?远程协作新模式 在远程办公日益普及的今天,团队每天被各种音视频会议填满:晨会、评审会、复盘会……时间碎片化严重,真正能专注做事的时间越来越少。有没有一种方式,既能保证信息同步和决策质…

基于springboot的实习管理系统毕业论文+PPT(附源代码+演示视频)

文章目录基于springboot的实习管理系统一、项目简介(源代码在文末)1.运行视频2.🚀 项目技术栈3.✅ 环境要求说明4.包含的文件列表(含论文)前台运行截图后台运行截图项目部署源码下载基于springboot的实习管理系统 如需…

offsetof 宏的实现

1、offsetof的介绍 offsetof宏用于获取结构体中某个成员相对于结构体起始地址的偏移量。它接受结构体类型和成员作为参数,返回一个无符号整型值。这个宏在C语言中非常有用,特别是在处理复杂数据结构时。 2、offsetof宏的定义 标准库中的offsetof宏定义…

Agent学习:模型调用(自用)

注意事项:由于使用的是openai的方式进行模型调用,那么从API集成平台上购买的api key需要将其key和url名称命名为:OPENAI_API_KEY和OPENAI_API_BASE,然后将这个放在.env文件中,并且使用以下方式进行读取和调用模型&…

LobeChat能否预置常用问题?提升响应一致性

LobeChat能否预置常用问题?提升响应一致性 在企业级AI应用逐渐普及的今天,一个看似简单却极具挑战的问题浮出水面:当不同用户、在不同时间、以略微不同的措辞提出同一个常见问题时,AI助手的回答是否还能保持一致?这不仅…

2025年远程控制软件排行榜:安全性能哪家强?ToDesk/TeamViewer/向日葵等对比

本文目录 一、引言:为何2025年远程安全性能成核心选型标准?二、实测对比:三款主流软件安全性能深度剖析2.1 ToDesk(1)二次验证保护(2)身份验证(3)隐私屏保护(4)自动解锁被控锁屏 2.2 TeamViewer(1)双重身份验证(2)身份验证 2.3 向日葵(1)二次…

【JavaWeb】乱码问题_HTML_Tomcat日志_sout乱码问题

目录乱码问题产生的根本原因编码解码原因各个字符集的兼容性HTML乱码问题Tomcat控制台乱码sout乱码乱码问题产生的根本原因 编码 编码:将人类可读的字符,按照指定字符集规则转换为二进制数据(如:UTF-8 下 “中”→0xE4B8AD&…

Windows系统常见文件扩展名一览

Windows常见文件扩展名详解:从基础到AI时代的命名实践 在今天这个数字内容爆炸的时代,你有没有遇到过这样的情况:收到一个名为“会议纪要.txt”的文件,点开却发现是病毒?或者下载了一段AI生成的视频,却搞不…

容器可观测新视角:SysOM 延时抖动监控助力定位业务抖动原因

背景 在云原生场景中,为了最大化资源利用率,越来越多的集群采用资源超卖策略和混合部署方式。然而,这种模式在提升集群效率的同时,也显著增加了宿主机与容器化应用之间的资源竞争风险。 在资源紧张的场景中,CPU 延时…

Fastapi打开swagger空白

原因:无法连接外部dns解决方法:在主入口引入fastapi_offline并用FastAPIOfflinefrom fastapi_offline import FastAPIOffline app FastAPIOffline()

Java 线程池(第七篇):线程池中的异常处理机制 —— 为什么异常会被“吞”?如何在生产中彻底兜住?

在第 6 篇中我们已经看到一个非常反直觉的现象:pool.submit(() -> {throw new RuntimeException("submit error"); });代码里明明 throw 了异常,但日志里却什么都没有。这不是 JVM 的 Bug,也不是线程池“不可靠”, 而…

cks解题思路-1.32-2

6、日志审计 log audit 你必须连接到正确的主机。不这样做可能导致零分。 [candidatebase] $ ssh cks001098 Context 您必须为 kubeadm 配置的集群实施审计。 Task 首先,重新配置集群的 API 服务器,以便: ⚫ 位于 /etc/kubernetes/logpolicy/…

程序员必备的 6 个效率神器:2025 年开源 AI 平台盘点

在 AI 功能正快速成为应用标配的今天,选择一个合适的开源平台能极大提升开发效率、避免重复造轮子。我整理了 6 款值得关注的开源项目,评选时主要看了这几个方面:功能是否完整、上手难易度、扩展性如何、社区是否活跃,以及商业项目…

Qwen-Image:基于Qwen-VL的20B多模态模型

Qwen-Image:基于Qwen-VL的20B多模态模型 在广告设计、品牌视觉和跨语言传播等专业创作场景中,一个长期存在的痛点是——AI生成的图像“看起来还行”,但细看却“用不了”。文字错乱、字体不匹配、排版失衡、修改困难……这些问题让设计师不得…

如何为LobeChat添加SSL证书实现HTTPS访问?

如何为 LobeChat 添加 SSL 证书实现 HTTPS 访问 在今天,越来越多开发者选择将 AI 聊天系统部署到私有环境中——无论是用于企业内部知识库、客服机器人,还是个人项目演示。LobeChat 凭借其现代化的 UI、对多种大语言模型(LLM)的良…

空气能十大品牌权威排名:引领行业创新与可靠的典范 - 资讯焦点

在“双碳”目标驱动及全球能源转型的浪潮下,空气能热泵技术凭借其高效、节能、环保的显著优势,已成为供暖、制冷及热水供应领域的核心解决方案。市场品牌众多,选择一款技术过硬、品质可靠、服务完善的品牌至关重要。…