python面向对象02--类和对象的定义方法(干货)

本文介绍了Python中的面向对象基础,包括定义类、创建对象以及对象的使用。详细讲解了如何定义方法,特别是self参数的使用,以及初始化方法(__init__)的重要性。此外,还探讨了对象的属性设置、内置方法如__del__和__str__,以及对象生命周期中的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象的基础语法

python中对象无处不在,变量、数据、函数都是对象。

要验证一个标识符是不是对象有两种方法:

1,在标识符/数据后面输入一个 “.”,然后按下tab键,iPython会提示该对象能够调用的方法列表。
2,使用内置函数dir传入标识符/数据,可以查看对象内的所有属性及方法。

__name__格式的方法是python提供的内置方法/属性。

方法名作用
__new__创建对象时,会被自动调用
__init__对象初始化时,会被自动调用
__del__对象被从内存中销毁前,会被自动调用
__str__返回对象的描述信息,print函数输出使用

定义类

面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了。

class 类名:
	def 方法1(self, 参数列表)pass
		
	def 方法2(self, 参数列表)pass

方法的定义格式和函数几乎一样,区别在于方法的第一个参数必须是self

类名的命名规则要符合大驼峰命名法

创建对象

当一个类定义完成之后,就可以用这个类来创建对象了。因为还没学定义属性,所以这里的名字属性直接用方法的形参进行传递,有点别扭。

对象变量 = 类名()
class Cat:
    def eat(self, name):
        print("小猫的名字叫%s" % name)


tom = Cat()
tom.eat("TOM")
print(tom)
小猫的名字叫TOM
<__main__.Cat object at 0x000001F4B1249C48>

在面向对象开发中,引用的概念同样适用。

在python中使用类创建对象之后,变量中记录的是对象在内存中的地址,也就是变量引用了新建的对象。使用print输出对象变量,默认情况下能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制)。

%d 可以以10进制输出数字
%x可以以16进制输出数字

addr = id(tom)
print("%d" % addr)
print("%x" % addr)

不推荐在类外部直接给对象增加属性:
在类的外部,可以直接给对象增加属性,只需要通过.利用赋值语句即可.

tom.gender = "female"
lazy_cat.gender = "male"

但是这种方法不推荐,因为对象的属性应该封装在类的内部。

方法的第一个参数是self,可以通过self.访问对象的属性。
哪一个对象调用的方法,self就是哪一个对象的引用。

在调用方法时,不需要传递self参数,因为对象在调用方法时,把自己传递给self了。在定义方法时,第一个参数必须是self

初始化方法

当使用类名()创建对象时,会自动执行以下操作:
1,为对象在内存中分配空间----创建对象
2,为对象的属性设置初始值----初始化方法__init__

__init__方法是专门用来定义一个类具有哪些属性的方法。

在初始化方法__init__内部使用self.属性名 = 属性的初始值 就可以定义属性。
定义属性之后,再使用Cat类创建对象,都会拥有该属性。

class Cat:
	def __init__(self):
		self.name = "Tom"

	def eat(self):
		print("%s 爱吃鱼" % self.name)
		

tom = Cat()
tom.eat()

通过改造初始化方法__init__,给初始化方法传入形参,可以实现在创建对象时,把对象的一些特有的属性以实参的方式传递到初始化方法内部。在创建对象时,应该对应的传入实参

class Cat:
	def __init__(self,name):
		self.name = name

	def eat(self):
		print("%s 爱吃鱼" % self.name)
		

tom = Cat("Tom")
lazy_cat = Cat("懒猫")
tom.eat()
lazy_cat.eat()

其他的一些内置方法:

__init__方法对应的__del__方法。

__del__方法:如果希望在对象被销毁前,再做一些事情,可以考虑一下__del__方法。

一个对象从调用 类名() 创建,生命周期开始,到 __del__方法被调用,生命周期结束。

def __del__(self):
	print("%s 去世了" % self.name)

这个方法不需要主动调用,系统在收回对象的时候自动调用。并且,tom这个对象是全局变量,只有在整个程序运行完毕之后,才会被自动调用因此Tom去世了会打印在程序的最后。如果想要提前调用,收回对象,可以使用del关键字

使用del关键字可以删除对象。

del tom

当代码中出现上述代码时,系统就会提前调用__del__方法,提前收回tom这个对象,这样Tom去世了打印的位置就和 del tom在程序中的位置有关了。

__str__方法

在python中,使用print输出对象变量,默认情况下,会输出这个变量引用的对象 是 由哪一个类创建的对象以及在内存中的的地址(十六进制表示)。如果希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了。

在使用__str__方法时,必须返回一个字符串。

class Cat:
	def __init__(self, new_name):
		self.name = new_name
		print("%s 来了" % self.name")

	def __str__(self):
		return "我是小猫:%s" % self.name


tom = Cat("Tom")
print(tom)

最后提一句,print(tom.name)打印出来的值,是创建对象时传入的属性值Tom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值