Python Class(类)讲解

本文详细介绍了Python中的类概念,包括类的定义、方法、继承和子类、重写等核心概念。通过实例解析了类的方法如何创建和使用共享变量,强调了`__init__`方法的重要性,并探讨了继承带来的风险和子类对父类方法的重写。此外,还提到了类的命名规范和注释技巧。

本文为原创,查询了官方文档(3.10.11),也参考了链接,感谢链接的作者!


什么是“类”

Python是一个面向对象的语言,C/C++面向过程的语言,所有,使用Python,必须
类(Class),在日常中,类,就是一个大类,比如,食物的类:
代码:(有高级内容,稍后讲解)

class Food:  # 没必要继承object
	
	# 类文档,可以使用__doc__方法导出
	'''
	This Food class.
	'''

	def __init__(self, name='Food', type='Food', price=0):
		
		self.name = name
		self.type = type
		self.price = price
		self.run()  # 调用run
	
	def run(self):

		print((self.name, self.type, self.price))

class Apple(Food):

	'''
	It's Apple.
	'''

	def __init__(self):
	
		super().__init__()
		self.name = 'Apple'  # 填写父类属性,类似链接https://blog.youkuaiyun.com/qq_48979387/article/details/128994501 的填写属性,感兴趣的可以看看网页
		self.type = 'Fruit'
		self.price = 5
	
	def run(self):  # 重写,类似链接https://blog.youkuaiyun.com/qq_48979387/article/details/128994501 的“精灵”类的update方法,感兴趣的可以看看源代码

		print('is' + self.name)

print(Food().__doc__)  # 输出Food类的文档

apple = Apple()
apple.run()  # 运行Apple类里重写的run

代码里面有一些知识点;注意一下注释的地方:

  • 继承:如果继承了一个类,使用super().__init__()可以对其进行初始化,否则无法使用;继承可以使你享受到父类的方法、变量
  • 类文档:用“多行注释”定义,可以用classname.__doc__()导出*
  • 填写父类属性:可以看看链接;仅支持继承关系,用于给父类传递属性;Apple类填写了父类Food的所有属性
  • 重写:可以看看链接,里面的update方法就是重写了模块里默认的update方法,这个比较重要
    OK,现在看看代码的解释吧。

类 - 定义

类的定义非常简单,类似使用def定义函数;定义类用class关键字:

class *classname:

	pass
	

pass表示什么都不做,没有效果


现在我们给它笨拙地添加属性,类似于有参函数(但是不是在括号里面加参数,需要使用另一种方法):<

Python中,是用于创建对象的蓝图,它将数据(属性)和操作这些数据的方法(函数)封装在一起,是面向对象编程的核心概念之一。 ### 的定义 使用`class`关键字来定义,语法和函数似。名通常遵循首字母大写的命名规范。以下是一个简单的定义示例: ```python class MyClass(): pass print(MyClass) ``` 上述代码定义了一个名为`MyClass`的,`pass`语句表示该暂时没有具体的代码实现。打印`MyClass`会显示它的型信息,输出为`<class '__main__.MyClass'>` [^1]。 ### 的构造方法 中的`__init__()`方法是一个特殊的方法,也称为构造方法,用于在创建的实例时进行初始化操作。`self`关键字是一个约定俗成的参数名,它代表的实例对象本身,在实例方法中使用时,用来传递实例对象,实际上是实例在内存中的一个地址,并且是隐形传递的。实例可以调用的属性,必须在`__init__()`里面定义并且初始化。以下是一个包含构造方法的的示例: ```python class Box: def __init__(self, chang, kuan, gao): self.chang = chang self.kuan = kuan self.gao = gao def say(self): return self.chang * self.kuan * self.gao if '__main__' == __name__: a = Box(1, 2, 3) print(a.say()) ``` 在这个例子中,`Box`有一个构造方法`__init__()`,用于初始化盒子的长、宽、高。`say()`方法用于计算盒子的体积。创建`Box`的实例`a`时,传入长、宽、高的值,然后调用`say()`方法计算并打印出体积 [^3]。 ### 数据(dataclass) 传统的定义虽然功能强大,但为了定义一个简单的数据结构,开发者经常需要手动编写`__init__`、`__repr__`、`__eq__`等重复性代码。这种编写方式不仅费时费力,还增加了出错的几率。为了简化这一过程,Python 3.7引入了数据(dataclass),它能够自动生成必要的方法,避免手动编写重复代码,从而使定义更简洁高效 [^2]。 ### 的复杂应用 当一个很复杂的时候,可以考虑使用多个进行组合。例如,下面的代码中,`Box`使用了`Color1`来设置盒子的颜色: ```python class Color1: def __init__(self, index=0): self.set_color = ["bai", "hei"] self.index = index def setColor(self): return self.set_color[self.index] class Box: def __init__(self, chang, kuan, gao, c1=0): self.chang = chang self.kuan = kuan self.gao = gao self.color0 = Color1(c1).setColor() def say(self): return self.chang * self.kuan * self.gao if '__main__' == __name__: a = Box(1, 2, 3, 1) print(a.say()) print(a.color0) ``` 在这个例子中,`Box`的实例`a`在创建时,通过`Color1`设置了颜色,并且可以调用`say()`方法计算体积 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值