Python学习之面向对象编程思想———拾遗

本文探讨了Python中魔法方法的使用,特别是如何通过覆写(重写)这些方法来增强类的功能。通过一个温度转换的例子,解释了如何正确实例化类以及面向对象编程的基本原则。

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

最近在学习小甲鱼的Python课程,学到了对魔法方法覆写(重写?重载?)这一块,先不bb,贴代码

class Cel:
	def __init__(self,value = 20.0):
		self.value = float(value)

	def __get__(self,instance,owner):
		return self.value

	def __set__(self,instance,value):
		self.value = float(value)

class fah:
	def __get__(self,instance,owner):
		return instance.celt * 1.8+32

	def __set__(self,instance,value):
		instance.celt = (float(value) -32)/1.8


class Tempture:
	celt = Cel()
	faht = fah()


这是一个摄氏度华氏度转换的实验。
运行代码如下
在这里插入图片描述
黑人问号??为什么faht是NoneType,代码中的类编写时不已经对他实例化了吗?而且编写完成类就会成为类对象,可以通过类对象可以访问类属性…好…扯远了…

经过一番寻找之后,终于发现问题!我没有实例化调用组合方法的类的对象!
即要先这样写: test = Tempture(),得先实例化一个对象出来

问题还没解决为什么类对象不能访问使用方法呢?!

很简单,面向对象编程的思想的一点,就是通过** 类 **将要实例化的对象抽象出来。

举个栗子,动物是一种类吧,是从鸡鸭鹅这些对象抽象出来的吧。

再说类的方法,就是类的行为,从程序的角度也可以说是一个函数,类中定义的方法,也是抽象的。

再举个例子,比如说动作,鸟飞鱼游乌龟爬,所以类中定义的方法是不具体的。方法的实现是针对每个不同的对象而言的,想通过类对象来使用方法,是不具体的,不能表达要做什么。

所以说之前没有先实例化对象,可能是一时疏忽,背后也可能是更可怕的没有掌握面向对象编程思想的精髓。

再说说复习复习魔法方法8 ^ v ^

Python中的魔法方法可以使用(修改)实例化这个“魔法方法的类”的”对象“的属性:

Class 这是一个魔法方法的类:

	》》Def __重写的方法__(self,instance,owner):
	
Self : 类对象
Instance: 因为魔法方法在组合(即一个类中实例化另一个类,他们属性不太相关时用组合方法,不使用继承,这也是一种拓展类的方法)中使用,这个关键词存放的是使用这个组合方法的类的对象
Owner: 使用组合方法的类

今天收获不错呢 哈哈哈 谦虚谦虚
补充一下
类对象就是可以用类名字直接使用表示的对象,它支持两种操作,直接属性使用和实例化。对于类属性的使用,直接使用类名.属性即可。对于类方法的使用,需要实例化一个对象后,将对象名赋值给self使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值