我在b站学python之基础学习十六:面向对象完

这篇博客详细介绍了Python中的面向对象编程特性,包括多态的概念和实现步骤,类属性的定义、访问及修改,以及类方法和静态方法的使用场景与区别。通过实例展示了如何在Python中创建类、子类,以及如何通过类和对象调用不同方法实现多态效果。同时,讲解了类属性的共享性质和静态方法在不依赖实例或类对象时的应用。
摘要由CSDN通过智能技术生成

上一篇:我在b站学python之基础学习十五:继承

一、多态
1、定义:多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果

2、实现步骤:
定义父类,并提供公共方法
定义子类,并重写父类方法
传递子类对象给调用者,可以看到不同子类执行效果不同

3、例:
通俗解释:都是警犬,有的是追击的,有的是搜毒的

#定义父类,提供公共方法:警犬和人
class Dog(object):
	def work(self):
		pass
#定义子类,子类重写父类方法:定义两个类表示不同的警犬
class ArmyDog(Dog):
	def work(self):
		print('追击警犬')

class DrugDog(Dog):
	def work(self):
		print('毒品警犬')
		
#定义人类
class Person(object):
	def work_with_dog(self,dog):
		dog.work()

#创建对象,调用不同的功能,传入不同的对象,观察执行结果
ad = ArmyDog()
bd = DrugDog()
ren = Person()
ren.work_with_dog(ad)
ren.work_with_dog(bd)

二、类属性
1、概念
类属性就是类对象所拥有的属性,它被该类的所有实例对象所共有。
类属性可以使用类对象或实例对象访问

2、设置和访问类属性例

#定义类,定义类属性
class Dog(object):
	tooth = 10
	
#创建对象
xiaohei = Dog
xoapbai =Dog

#访问类属性:类和对象
print(Dog.tooyh)       #10
print(xiaohei.tooyh)   #10 
print(xiaobai.tooyh)   #10

注意:
记录的某项数据始终保持一致时,则定义类属性
类属性为全类所共有,仅占用一份内存,更加节省内存空间。

3、修改类属性
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性。
例:

class Dog(object):
	tooth = 10

xiaohei = Dog
xoapbai =Dog

#通过类修改
Dog.tooth = 20
print(Dog.tooth)    #20
print(xiaohei.tooyh)    #20
print(xiaobai.tooyh)    #20

#通过对象修改
xiaohei.tooth = 30
print(Dog.tooth)    #20
print(xiaohei.tooyh)    #30
print(xiaobai.tooyh)    #20

三、类方法
1、特点
需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数

2、使用场景
当方法中需要使用类对象(如访问私有类属性)时,定义类方法
类方法一般和类属性配合使用

3、例

#定义类:私有属性,类方法获取这个私有类属性
class Dog(object):
	__tooth = 10
	
	#定义类方法
	@classmethod
	def get-tooth(cls):
		return cls.tooth
		
#创建对象,调用类方法
xiaohei = Dog()
result = xiaohei.get_tooth()
print(result)

四、静态方法
1、特点
需要通过装饰器@staticmethod来进行修饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)
静态方法也能够通过实例对象类对象去访问

2、使用场景
当方法中既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象(如类属性、类方法、创建实例)时,定义静态方法
取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗

3、例

#定义类,定义静态方法
class Dog(object):
	@staticmethod
	def info_print():
		print('静态方法')
		
#创建对象
xiaohei = Dog()

#调用静态方法:类和对象
xiaohei.info_print()    #静态方法
Dog.info_print()    #静态方法

下一篇:我在b站学python之基础学习十七:异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值