[Python 3.x入门] 6. Python面向对象编程
off999 2024-09-23 11:32 43 浏览 0 评论
面向对象编程:OOP
- 对象的组成:
状态:都是描述事物的名词形式(唱,跳,rap)
行为:都是描述事物的动词形式(身高,体重)
- 抽象过程
是面向对象中的一种分析方法。
抽象过程就是要分析出对象都存在哪些自己的属性(状态)和方法(行为)
- 类
类就是类别的意思,同一类别的事物都会有共同的属性(状态)或方法(行为)
- 对象
对象就是类的一个具体表现事物
任何对象都拥有相同的属性和方法(即类中的所有属性和方法)
每个对象的属性或方法会有独特的个性。
- 面向对象的三大特性:
封装:通过语句块保护变量或对象的作用域,提高代码的安全性
继承:子类拥有父类的可访问属性和方法,提高代码的重用性
多态:各种重载和重写的机制,提高代码灵活性。(Python没有多态特性)
- python面向对象的快速创建
创建类
class 类名称():
创建对象
对象标识符 = 类名称()
调用类当中的方法
对象标识符.方法()
- 类当中的四种方法:
实例、类、静态、普通
class Demo():
def instanceMethods(self,arg1,arg2): #定义类的实例方法
pass
if __name__ == '__main__':
obj1 = Demo() #创建一个obj1的对象
obj1.instanceMethods(1,2) #调用类中的方法
obj1.instanceMethods(1,2,3) # 报错,对象调用,self不传值
Demo.instanceMethods(1,2,3) #不报错,类调self传值,形参与实参个数对应
- 类和对象的使用入门:
#构造方法的使用
class Person():
def __init__(self): #通过类创建对象时默认会执行的方法,不要手动调用
pass
def __str__(self): #当我们直接打印输出对象的时候调用的,相当于Java的toString()
return '' #对该方法的重写
if __name__ == '__main__':
per = Person()
print(per)
print(per.__str__()) # print(per) 与print(per.__str__()) 效果相同
- 类的成员属性
class Person():
def __init__(self,name,gender,age): #定义属性
self.name = name
self.gender = gender
self.age = age
if __name__ == '__main__':
per1 = Person() #报错,必须传参
per = Person('zs','男',15) #传值
- 类变量和类方法
class Demo():
classVariable = '这是类中定义的变量,是类变量'
def __init__(self): #这里定义实例变量
self.instanceVariable = '这是在__init__构造方法中定义的变量,是成员变量'
@classmethod #定义类方法,在方法头上标识这一句
def classMethod(cls,arg1): #在方法参数列表中,第一个参数必须是cls
pass
if __name__ == '__main__': #可以通过实例对象访问类属性,类方法,成员变量
obj1 = Demo()
print(obj1.classVariable) #实例访问类变量
print(obj1.instanceVariable) #实例访问实例变量
print(obj1.classMethod('hello world!')) #实例访问类方法
Demo.classVariable #类访问类变量。类不能访问实例变量。
Demo.classMethod('hello world !') #类访问类方法 。 - 静态方法 staticmethod
可以理解为该类空间的一个函数
class Demo():
classVariable = '这是类变量'
def __init__(self):
self.instanceVariable = '这是实例变量'
#静态方法中不能访问类变量
@staticmethod #定义静态方法上方需加上这一句
def staticMethod(): #定义静态方法,没有强制传入第一个为cls或者self参数,可不传参数
print('这是静态方法')
if __name__ == '__main__':
obj1 = Demo()
obj1.staticMethod() #通过实例变量调用静态方法
Demo.staticMethod() #通过类调用静态方法- 普通方法
- 与定义函数无区别。
- 可以被类实例调用,不能被类调用。
实例方法、类方法与静态方法的区别(在类中有类变量、实例变量没有静态变量)
class Demo():
outerVar = '这是类变量'
def __init__(self):
self.innerVar = '这是实例变量'
def innerMethod(self): #实例化方法只能被实例化对象使用,参数必须有self
print('这是实例方法')
@classmethod
def classMethod(cls): #可以被类和对象调用,从属于类,不建议使用的对象操作
print('这是类方法') #第一个参数必须是cls
@staticmethod
def staticMethod(): #静态方法可以被类和对象调用,本质是在改存储空间开辟一块空
print('这是静态方法') #间写出的函数,在定义静态方法时,没有强制要求使用cls或者self- 查看类的功能
使用dir() 和 help() 函数
- 重点使用的内置的属性或者方法
__new__ 用于创建出对象,被自动创建
__init__ 用于初始化对象,被自动调用,可以理解为对对象的加工
__str__ 用于显示对象的描述信息(有返回值),一般建议重写这个方法
__del__ 用于将对象从内存中清除,被自动调用
相关推荐
- windows7安装windows10(windows7安装光盘下载)
-
在安装Win7时,出现提示“Windows无法安装到这个磁盘。这台计算机的硬件可能不支持启动到此磁盘。请确保在计算机的bios菜单中启用了磁盘的控制器。” 解决方法: 1.如果之前你做过BIOS设置,...
-
- 装机配置模拟器(装机配置模拟器教程)
-
装机模拟器2好装机模拟器2装系统方法1.在游戏PC装机模拟器里,有时候我们修理好电脑之后,发现电脑没有安装操作系统,这时候应该先安装系统。2.第一步,点击PC装机模拟器游戏,登录游戏。3.第二步,进入游戏之后,找到需要没有安装操作系统的电脑...
-
2025-11-10 21:51 off999
- 电脑网络正常但是上不了网(网络正常但电脑无法上网)
-
分析如下1、首先检查网卡的问题,打开电脑后,打开电脑右下角的WiFi连接,然后从里面的网络和共享中心检查,打开网络和共享中心后,出现对话框,在对话框左侧上方找到更改适配器设置,单击左键打开,就可以发现...
- vs2008安装包下载(vs2008下载官方下载)
-
vs2008是面向WindowsVista、Office2007、Web2.0的下一代开发工具,VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用V...
- cad2018序列号(cad2018序列码)
-
AutoCAD2018序列号和密钥:序列号:356-72378422,666-69696969,667-98989898,400-45454545,066-66666666等密钥:001J1CA...
- ip检测网站(ip地址测试)
-
IP检测工具(IPNetChecker)V1.5.2是一个简易实用,功能强大的网络监控软件,使您可以检查互联网和局域网上的IP主机的网络状态。IP检测工具(IPNetChecker)V1.5....
- 云电脑app哪个好(手机云电脑app哪个最好)
-
答:以下是一些比较好的云电脑应用程序推荐:1.AnyDesk-支持Windows、MacOS、Linux、Android和iOS,可用于远程访问和控制PC或移动设备。2.Splashtop...
- 怎样注册邮箱163免费(怎样注册邮箱163免费账号)
-
一、工具:电脑(联网)、浏览器二、操作步骤:【1】打开浏览器,找到“163邮箱”,点击。【2】点击右边的“注册”。【3】网站默认注册手机号码邮箱,填写信息,点击“注册”。若不想泄漏手机号码或不想使用手...
- 微软surface pro 6(微软surface pro 6可以扩容吗)
-
SurfacePro6的接口包含:1个标准尺寸USB3.0端口,3.5mm耳机插孔,MiniDisplayPort,1个SurfaceConnect端口,Surface专业键盘盖端口,microSDX...
- 电源已接通未充电怎么回事(电源已接通未充电 真正解决办法)
-
原因分析:出现这样的原因有可能是长时间没有充电,导致电池的内部电量耗完后亏电严重,只是电脑充电的保护,不让过充而已,只要设置一下电池选项一般就可以解决问题了。解决方法:1、关机,拔下电源,拔出电池,...
- 华为云会议app下载(华为云会议下载)
-
华为云会议可以在PC客户端或者手机客户端上一键发起立即会议,1秒创会。然后在会中选择企业通讯录中的人加入,系统会自动呼叫这些与会人,接听后即加入会议。ZOOM是一个云会议服务平台,为客户提...
- 路由器重置方法(路由器重置方法详细步骤)
-
路由器靠近WAN口边上的有一个小孔用于路由器的重置,路由器配置完成后,我们可能会忘记他的用户名或者是密码,那么我们可以把它恢复到出厂设置,再靠近万口或电源之间,有一个小孔,用一个尖锐的金属查一下大约五...
- 100个有效qq号以及密码(有效qq号和密码大全)
-
如果你的电脑知识好的话,不妨用一些复合密码!SHIFT+一些特殊符号,字母,数字!虽然麻烦了点,但总比被人盗号了的好,是吧!最好还用手机绑定一下,这样的话方便改密码也不怕QQ被盗了哦。。。QQ密码找回...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
