Python:类的基本使用

今天,我们来学习类的基本定义和使用。

1.定义类

如何定义一个类呢?

class 类名:
	属性和方法定义

照此格式,定义一个Animal类:

class Animal:
	pass

(先用pass来占位)
将一个dog变量进行赋值:

dog = Animal()

为其设置属性:

dog.name = "Bobby"
dog.age = 5

打印关于它的信息:

print("小狗的名字是", dog.name)
print("年龄是", dog.age)

这样做太麻烦了,有没有更简单的方法呢?

2.初始化方法 __ init __

class Animal:
	def __init__(self, name, age):
		self.name = name
		self.age = age

上述代码中,我们为类添加了一个__init__方法,这个方法可以有任意个参数,这里设置了3个参数,它初始化了类的属性,来创建一个dog对象看看:

dog = Animal("Bobby", 5)

你可能会有疑问,为什么只传入了2个参数,而不是3个?
其实,Animal对象接受了3个参数:self,name和age,第一个参数self是操作的实例对象本身,Python传入时会自动加上,就只要写2个参数来定义类的属性。

现在我们来打印它看看:

print(dog)

输出:
(如果不是,也会类似于下面)
<__ main __.Animal object at 0x0000000002E068D0>
这没有打印我们需要的字符信息,该怎么办呢?

3.魔术方法__ str __

class Animal:
	def __init__(self, name, age):
		self.name = name
		self.age = age
	def __str__(self):
		message = "我的宠物是" + self.name + ",年龄是" + str(self.age) + "岁"
		return message

在class类中,原来这个__ str __ 方法是用于返回类的一种编码,打印实例对象就是打印了它的调用结果。我们这时用其他代码覆盖这个函数,就可以控制Animal对象的打印输出。
(注意:这个方法最后要有return关键字返回内容信息)
打印它:

print(dog)

输出:

我的宠物是Bobby,年龄是11岁

4.在类里创建自定义方法

4.1 公有方法

又双叒叕是动物的例子:

class Animal:
	def __init__(self, name, age):
		# 省去__init__代码 
	def __str__(self):
		# 省去__str__方法代码
		 
	# 自定义方法 读取动物名字
	def get_name(self):
		return self.name
	# 读取年龄
	def get_age(self):
		return self.age
cat = Animal("Sam", 3)

在上述代码中,我们编写了两个方法,分别用来读取对象的名称与年龄,
打印一下:

print(cat.get_name())
print(cat.get_age())

输出:
Sam
11

4.2 私有方法

如何定义一个私有方法呢?
很简单,只要在函数名前加上两个下划线即可,下面还是个动物例子:

class Animal:
	def __init__(self, name, age, sleep_time):
		# 省去一部分__init__的代码 加入一行新的代码
		self.sleep_time = sleep_time
	def __str__(self):
		# 省去__str__代码
		
	# 公有方法 更新动物的状态
	def update_status(self, now_time):
		self.__sleep(now_time)
	# 私有方法 动物睡觉判断
	def __sleep(self, now_time):
		if now_time = self.sleep_time:
			print(self.name, "睡觉了")

cat = Animal("Sam", 3, 18)
cat.updata_status(18)

输出:

Sam 睡觉了

我们为Animal类加入了一个新参数,它用来显示动物在几时睡觉。updata_status函数是一个公有方法,调用时传入当前小时,再调用__sleep私有方法判断动物是否在睡觉。
为什么要给动物加个私有方法判断是否睡觉了呢?
因为动物睡觉基本不可以人为控制,是由动物来自主完成的。
注意:私有方法不能在类外面访问,否则会报错。

5.类的继承

class Animal:
	def __init__(self, name, age):
		self.name = name
		self.age = age
	def speak(self):
		print(self.name, "在叫")

5.1 覆盖父类的方法

如何让一个新类继承父类Animal呢?

# 猫类
class Cat(Animal):
	def speak(self):
		print(self.name, "在喵喵叫")

在上述代码中,我们继承了Animal类的属性,初始化方法和speak方法,其中我们还覆盖了speak方法的代码,体现了继承的灵活性。

5.2 子类添加更多新的属性

# 又是猫类
class Cat(Animal):
	def __init__(self, name, age, color)
		Animal.__init__(self, name, age)
		# 增加颜色属性
		self.color = color

在代码中,我们调用了Animal的__init__方法,继承了name和age,又添加了一个color属性应用于子类。

好了,今天的类学习就到这了,有什么问题可以在评论区讨论,再见!

猜你喜欢

转载自blog.csdn.net/wangzirui32/article/details/113043775
今日推荐