Python学习笔记 23

属性和方法总结篇

  • 类属性,实例属性
  • 类方法,实例方法
  • 静态方法
class A:

	# 直接在类中定义的属性是类属性
	# 	类属性可以通过类或者类的实例访问
	# 	但类属性只能通过类对象修改,无法通过实例修改
	count = 5

	def __init__(self):
		# 实例属性,通过实例对象添加的属性
		# 	实例属性只能通过实例对象来访问修改,类对象无法访问修改
		self.name = '小王'

	# 实例方法
	# 在类中定义,以self为第一个参数的方法都是实例方法
	# 实例方法可以通过实例和类去调用:
	# 	当通过实例调用时,会自动将调用对象作为self传入
	# 	当通过类调用时,不会自动传递self,此时我们必须手动传递self
	def test(self):
		print('这是test方法。。',self)

	# 类方法
	# 在类内部使用 @classmethod 来修饰的方法属于类方法
	# 类方法的第一个参数是cls,也会被自动传递,cls就是当前的 类 对象
	# 类方法可以通过类去调用,也可以通过实例调用,
	# 和实例方法的区别就在于第一个参数是类还是实例对象
	@classmethod
	def test_2( cls ):
		print('这是test_2类方法。。',cls)

	# 静态方法
	# 在类中使用 @staticmethod 来修饰的方法属于类方法
	# 静态方法不需要指定任何默认参数,静态方法可以通过类和实例去掉用
	# 静态方法,基本上是一个和当前类无关的方法,它只是一个保存到当前类中的函数
	# 举个栗子:假如类是一个车,静态方法就相当于车里的一个箱子,箱子里有扳手,钳子等工具
	@staticmethod
	def test_3() :
		print('静态方法test_3。。')

a = A( )
# 实例属性,通过实例对象添加的属性
a.count = 200# 并没有修改A类中的属性,只是在实例a中添加了a的实例属性count
print('a:',a.count)
print('A:',A.count)

a.test()# 通过实例调用
A.test(a)# 通过类调用
# 两个方法等价的,本质是是一样的

# a.test_2 也等价于 A.test_2

# a.test_3 也等价于 A.test_3

猜你喜欢

转载自blog.csdn.net/weixin_44011689/article/details/89851868
今日推荐