当前位置: 首页 > news >正文

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.jsqmd.com/news/100113/

相关文章:

  • windows批量启动exe的bat
  • EmotiVoice:开源多情感TTS引擎
  • Python类属性与魔术方法全解析
  • 少儿编程Scratch3.0教程——05 事件积木(项目练习)
  • 基于springboot的实习管理系统毕业论文+PPT(附源代码+演示视频)
  • LobeChat能否召开虚拟会议?远程协作新模式
  • Agent学习:模型调用(自用)
  • LobeChat能否预置常用问题?提升响应一致性
  • 2025年远程控制软件排行榜:安全性能哪家强?ToDesk/TeamViewer/向日葵等对比
  • 【JavaWeb】乱码问题_HTML_Tomcat日志_sout乱码问题
  • Windows系统常见文件扩展名一览
  • 容器可观测新视角:SysOM 延时抖动监控助力定位业务抖动原因
  • Fastapi打开swagger空白
  • cks解题思路-1.32-2
  • 程序员必备的 6 个效率神器:2025 年开源 AI 平台盘点
  • Qwen-Image:基于Qwen-VL的20B多模态模型
  • 如何为LobeChat添加SSL证书实现HTTPS访问?
  • 空气能十大品牌权威排名:引领行业创新与可靠的典范 - 资讯焦点
  • 27、深入了解 Samba 系统及相关组件配置
  • 网络安全审查第一案回顾与启示
  • 28、技术干货与开源许可知识整合
  • Linux查询防火墙放过的端口并额外增加需要通过的端口命令
  • GPT-SoVITS语音合成技术实战指南
  • Toggle Sidebar1172 Panda and PP Milk
  • 工业品B2B品牌战略咨询公司哪家好?奇正沐古入选五强! - 资讯焦点
  • 靠谱的人工智能证书哪家技术强
  • 盈尚环境工程(杭州)有限公司的售后服务如何?服务受客户认可吗 - 工业推荐榜
  • Qwen3-14B模型部署六大常见问题与解决方案
  • 千问模型下载 加载
  • 22、Samba-3:常见问题与应用案例剖析