百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

[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()         #通过类调用静态方法
  • 普通方法
  1. 与定义函数无区别。
  2. 可以被类实例调用,不能被类调用。

实例方法、类方法与静态方法的区别(在类中有类变量、实例变量没有静态变量)

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...

怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
cad2018序列号(cad2018序列码)

AutoCAD2018序列号和密钥:序列号:356-72378422,666-69696969,667-98989898,400-45454545,066-66666666等密钥:001J1CA...

恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
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密码找回...

取消回复欢迎 发表评论: