python是一种面向对象的高级语言,python中面向对象的概念
仅用于研究参考。
对象是什么?
目标内置函数定义简单类(仅包含方法)初始化方法内置方法和属性01中的自身参数。dir内置函数对象在Python中几乎无处不在。我们之前学过的变量、数据、函数都是对象。您可以使用以下两种方法在Python中验证它们:
在标识符/数据后输入a .然后按TAB键。iPython将提示对象可以调用的方法列表。使用内置函数dir传入标识符/数据,可以查看对象中的所有属性和方法。_ _ method name _ _格式的方法是Python提供的内置方法/属性。后面我会给大家介绍一些常用的内置方法/属性。
序列号
方法名称
类型
功能
01
新的
方法
当一个对象被创建时,它将被自动调用。
02
初始化
方法
当对象初始化时,它将被自动调用。
03
倒三角形
方法
该对象将在从内存中销毁之前被自动调用。
04
潜艇用热中子反应堆(submarine thermal reactor的缩写)
方法
返回对象的描述信息,打印函数输出使用
小贴士:善用dir()函数,学习时不需要背很多内容。
02.定义一个简单的类(只有方法)
面向对象是更大的封装,把多个方法封装在一个类中,这样这个类创建的对象就可以直接调用这些方法了!
2.1定义一个只包含方法的类。在Python中,应该定义一个只包含方法的类。语法格式如下:Class类名:
方法1(自我,参数列表):
及格
方法2(自我,参数列表):
pass方法的定义格式和之前学过的函数几乎一样。不同的是第一个参数必须是self。先暂时记住,以后再介绍self。
注意:类名的命名规则要符合大驼峰命名法。
2.2创建一个对象当一个类定义完成后,这个类应该用来创建一个对象。语法格式如下:对象变量=类名()2.3第一个面向对象程序的要求
小猫喜欢鱼,小猫想要水。
分析一只猫猫,定义两种方法,吃和喝。根据要求——,无需定义属性类别Cat:
这是一只猫
定义吃(自己):
打印(“小猫喜欢鱼”)
定义饮料(自我):
打印(“小猫在喝水”)
汤姆=猫()
汤姆.饮料()
Tom.eat()强调引用的概念
在面向对象开发中,引用的概念同样适用!
在Python中使用类创建对象后,对象在内存中的地址仍然记录在tom变量中,即tom变量引用新创建的cat对象。默认情况下,它可以输出对象变量,该变量引用的对象是由哪个类创建的,以及它在内存中的地址(十六进制表示)。
提示:在计算机中,内存地址通常用十六进制表示。
十进制和十六进制都用来表示数字,只是表达方式不同。十进制和十六进制数字可以相互转换。
%d可以输出十进制数字%x可以输出十六进制数字。Case Advanced ——使用Cat类创建另一个对象lazy_cat=Cat()
lazy_cat.eat()
lazy_cat.drink()
问题:tom和lazy_cat是一个对象吗?
03.方法3.1 case变换中的self参数——在Python中给对象添加属性,给对象设置属性是非常容易的,但是不建议这样做,因为:对象属性的封装应该封装在类内部,只需要直接通过类外的代码即可。设置一个属性。
注意:这种方法虽然简单,但不推荐!
汤姆。name=汤姆
.
Lazy_cat.name= lazy cat 3.2使用self输出方法内部每只猫的名字。
哪个对象调用方法,方法中的自我就是哪个对象的引用。
在类封装的方法内部,self是指当前调用方法的对象调用方法本身时,程序员不需要传递self参数。在该方法中,可以通过自身访问对象的属性。或者其他对象方法可以通过self调用。修改代码如下:类别类别:
定义吃(自己):
打印(“%s喜欢鱼“% self.name”)
汤姆=猫()
汤姆。name=汤姆
tom.eat()
lazy_cat=Cat()
Lazy_cat.name=懒猫
lazy_cat.eat()
在类外部,通过变量名访问对象的属性和方法。在类封装的方法中,通过self访问对象的属性和方法。04.方法4.1初始化前代码存在的问题。3354在类外给对象添加属性调整案例代码,先调用方法再设置属性,观察执行效果tom=Cat()
汤姆.饮料()
tom.eat()
汤姆。name=汤姆
Print(tom)按如下方式执行:
在[7]中:分类类别:
.def eat(自身):
.print(%s爱鱼 % self.name)
.
在[8]:汤姆=猫()
在[9]:汤姆.饮料()
-
AttributeError Traceback(最近一次调用)
模块()中的ipython-input-9-3b5ae6127180
- 1 tom.drink()
AttributeError: Cat实例没有属性“drink”
在[10]: tom.eat()
-
AttributeError Traceback(最近一次调用)
模块()中的ipython-input-10-2c4e517d4867
- 1 tom.eat()
ipython-input-7-5e 70 b 89 CBD 9 e in eat(self)
1类猫:
2 def吃(自己):
-3 print(“% s喜欢鱼“% self.name”)
四
AttributeError: Cat实例没有属性“name”
In [11]: tom.name=Tom
在[12]:打印(汤姆)
__main__。0x0000000006885A48处的Cat实例
在[13]中:可以看到上面的执行都报告了错误。提示Cat类没有名称drink之类的属性。
建议在日常开发中,不建议在类外给对象添加属性。如果在运行时没有找到属性,程序将报告一个错误,说明对象应该包含哪些属性,哪些属性应该封装在类中。4.2初始化方法——构造方法在创建类名为()的对象时,会自动执行以下操作:为对象分配内存空间——创建对象并为对象的属性设置初始值——初始化方法(init)。这个初始化方法是__init__方法,而__init__是对象的内置方法。
__init__ method是专门用来定义一个类有哪些属性的方法!
将__init__方法添加到DeadFatBoy类中,并验证在[14]:类DeadFatBoy:
.def __init__(self):
.print(这是一个死胖阶级)
.
[15]:4.3在初始化方法中定义属性。利用自我。Attribute name=在__init__方法中定义属性的属性的初始值。定义属性后,所有使用死胖男孩类创建的对象都将在[16]中拥有该属性:类Dead Fat Boy:
.def __init__(self):
.print(这是一个死胖阶级)
.self.nick=一个死胖子
.def eat(自身):
.print(%s love house% self.nick)
.
In [17]: libai=DeadFatBoy()
这是一个死肥班。
在[18]: libai.eat()
死胖子爱房子。
在[19]中:
在[19]:任飞=死胖子()
这是一个死肥班。
在[20]: renfei.eat()
死胖子爱房子。
[21]:4.4初始化方法的修改3354在初始化的同时设置初始值在开发中,如果要在创建对象的同时设置对象的属性,可以修改__init__方法来设置所需的属性值,参数定义为__init__方法使用self。attribute=方法内部的形参,用于接收外部传递的参数。当创建一个对象时,用类名[21]: class DeadFatBoy调用(属性1,属性2.):
.def __init__(self,name):
.print(这是一个死胖阶级)
.self.nick=一个死胖子
.self.name=name
.def eat(自身):
.print(%s love house% self.nick)
.
[22]:李白=死胖子(“李白”)
这是一个死肥班。
在[23]:打印(libai.name)
05.李白内置方法及属性序号
方法名称
类型
功能
01
__del__
方法
该对象将在从内存中销毁之前被自动调用。
02
__str__
方法
返回对象的描述信息,打印函数输出使用
5.1 __del__方法在Python中,当创建一个类名为()的对象时,为对象分配空间后,自动调用__init__方法。在从内存中销毁对象之前,会自动调用__del__方法。应用场景__init__转换初始化方法,可以使创建对象更加灵活__del__如果你想在对象被销毁之前做些什么,可以考虑__del__方法的生命周期。通过调用类名()创建对象,生命周期开始。一旦调用了对象的__del__方法,它的生命周期就在对象的生命周期内结束,因此您可以访问对象属性,或者让对象调用[24]中的方法:
.def __init__(self,name):
.print(这是一个死胖阶级)
.self.nick=一个死胖子
.self.name=name
.def eat(自身):
.print(%s love house% self.nick)
.def __del__(self):
.打印( %s已销毁 % self.name )
.
[25]:李白=死胖子(“李白”)
这是一个死肥班。
[26]:德尔李白
李白被毁灭了
[27]:Python中的5.2 __str__方法,使用print输出对象变量。默认情况下,它将输出该变量引用的对象是由哪个类创建的,以及内存中的地址(十六进制表示)。如果您想在使用print in development打印对象变量时打印自定义内容,可以使用内置方法__str__
注意:__str__方法必须返回一个字符串。
# #默认情况下,在使用__str__方法之前返回内存地址。
在[12]:打印(汤姆)
__main__。0x0000000006885A48处的Cat实例
# #使用__str__自定义print (class)的返回信息
[27]班里死胖子:
.def __init__(self,name):
.print(这是一个死胖阶级)
.self.nick=一个死胖子
.self.name=name
.def eat(自身):
.print(%s love house% self.nick)
.def __del__(self):
.打印( %s已销毁 % self.name )
.def __str__(self):
.return“% s”是一个小胖子“% self.name
.
[28]:李白=死胖子(“李白”)
这是一个死肥班。
[29]:印刷(立白)
李白是一个小胖子。
在[30]中:
关注微信微信官方账号,回复【数据】,Python,PHP,JAVA,web,即可获取Python,PHP,JAVA,前端等视频数据。
来自海洋的渔夫原创作品,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。