别害怕 Python 的类!用生活大白话一次性讲明白,新手也能看懂
·
一、先说最核心:类到底是个啥?
类就是一张通用模板、一张图纸、一个模具。class 就是用来画模板的关键字;根据模板造出来的具体东西,叫实例,造实例的过程叫实例化。
任何模板都分两块,代码里对应两个概念,我换通俗叫法:
特征(属性):名词,描述这个东西长啥样、有啥信息比如人:名字、年龄、身高;圆:半径;学生:学号、成绩
能干的事(方法):动词,这个东西能执行什么操作比如人:改名、查看年龄;圆:算面积、算周长;学生:修改分数
三、第一个关键词:init 初始化函数,模板的开工流程
大白话解释:每次你按照模板造一个实物的时候,程序会自动运行__init__,用来给这个实物填基础信息。
拿 Person(人类)举例:造人的时候,必须给他填名字、年龄,__init__就是专门接收这两个信息,存到这个人自己身上。
四、最迷惑的 self:“自己” 两个字解决所有疑问
- p1 = Person ("马云云",18),这里 self 就是马云云本人
- p2 = Person ("马云云云",20),这里 self 就是马云云云本人
五、上手写第一个简单类,逐行碎碎念讲解
# 1. 造一张“人”的模板(类)
class Person:
# 2. 开工流程:造人的时候必须给名字、年龄
def __init__(self, name, age):
# 3. 把传进来的名字、年龄,存给这个人自己
self.name = name
self.age = age
# 4. 动作1:查看自己名字
def get_name(self):
return self.name
# 5. 动作2:修改名字
def set_name(self, new_name):
self.name = new_name
# 6. 自我介绍动作
def introduce(self):
print(f"大家好,我叫{self.name},今年{self.age}岁")
# 照着模板造第一个人:小明,18岁(实例化)
p1 = Person("小明", 18)
# 调用自我介绍
p1.introduce()
# 改名字
p1.set_name("小明同学")
# 再自我介绍
p1.introduce()
# 再造第二个人,和小明完全互不干扰
p2 = Person("小李", 20)
p2.introduce()
六、再来个实用例子:圆形模板,算面积周长
看完人的例子,再来个数学相关的,巩固思路:
import math
# 圆形模板
class Circle:
# 造圆的时候,必须输入半径
def __init__(self, r):
self.radius = r
# 动作1:计算面积
def get_area(self):
return math.pi * self.radius ** 2
# 动作2:计算周长
def get_perimeter(self):
return 2 * math.pi * self.radius
# 造一个半径5的圆
c1 = Circle(5)
print("圆面积:", round(c1.get_area(), 2))
print("圆周长:", round(c1.get_perimeter(), 2))
# 再造半径10的圆,互不影响
c2 = Circle(10)
print("大圆面积:", round(c2.get_area(), 2))
八、之前练习题里的点类,简化版复盘
import math
import random
# 坐标点模板:每个点有x、y两个特征
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
# 获取x坐标
def get_x(self):
return self.x
# 获取y坐标
def get_y(self):
return self.y
# 动作:计算和另一个点的距离
def distance_to_other(self, other_point):
dx = self.x - other_point.get_x()
dy = self.y - other_point.get_y()
return math.sqrt(dx**2 + dy**2)
# 随机生成两个点
p_a = Point(random.randint(-100,100), random.randint(-100,100))
p_b = Point(random.randint(-100,100), random.randint(-100,100))
print("两点距离:", round(p_a.distance_to_other(p_b), 2))
更多推荐



所有评论(0)