欢迎光临
我们一直在努力

别害怕 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)
未经允许不得转载:171主机测评 » 别害怕 Python 的类!用生活大白话一次性讲明白,新手也能看懂
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址