Python 中的面向对象编程(Object-Oriented Programming, OOP)是一种编程范式(paradigm),它通过类和对象的概念来组织代码,使代码更具模块化、可重用性和可扩展性。

比如:一只小猫就是一个对象

  • 属性:毛色、名字、年龄
  • 行为:喵喵叫、跳跃、吃饭

1. 面向对象编程的核心概念

面向对象编程的核心概念在于对象

:模具的说明书,比如汽车类动物类学生类 对象:就像通过模具的说明书制造的实际汽车,每一辆车都是一个对象。

类 Class

  • 类是创建对象的模板或蓝图,用来定义对象的属性和行为
  • 使用关键字class定义类

对象 object

  • 对象是类的实例或实体,是类实际创建出来的实体。
  • 对象包含了属性和方法

2. 创建第一个类:人物类

定义类

class Person:
	pass

创建对象

person1 = Person()
person2 = Person()

类就是模板Modelperson1person2是由这个Model 创建的对象

为类添加属性

类的属性(Class Attributes) 是指类内部定义的变量,它可以被类的所有对象(object<实例instance>)共享。对于一个Person来说,它需要有的具体属性有名字年龄等。

class Person:

	def __init__(self, name, age):
		self.name = name
		self.age = age
  • __init__是类的构造方法constrctor), 用于在类的对象被创建时自动调用,完成对象的初始化操作。initinitialize的缩写。
  • self表示这个对象本身, 主要作用是允许类的对象访问和修改对象的属性。
class Person:

	def __init__(self, name, age):
		self.name = name
		self.age = age

	def greet(self):
		print(f"Nice to meet you. My name is {self.name} and I'm {self.age} years old.")

示例

题目 1:计算圆的属性

要求:
创建一个类 Circle,用来表示一个圆。该类应包含以下功能:

  1. 初始化方法,接受半径作为参数。
  2. 一个方法 area(),返回圆的面积(用 math.pi)。
  3. 一个方法 circumference(),返回圆的周长。

提示:
使用 random.randint() 生成随机数。

from math import pi

class Circle:

	def __init__(self, radius):
		self._radius_ = radius

	def area(self):
		a = pi * self._radius_ * self._radius_
		return a

	def circumference(self):
		return 2 * pi * self._radius_

题目 2:计时器类

要求:
创建一个类 Timer,实现以下功能:

  1. 初始化方法,不需要参数。
  2. 一个方法 start(),记录当前时间为开始时间。
  3. 一个方法 stop(),记录当前时间为结束时间,并计算间隔时间。
  4. 一个方法 elapsed(),返回计时器运行的总时长,单位为秒。

提示:
使用 time.time() 获取当前时间戳。

import time

class Timer:

    def __init__(self):

        self.stime = 0
        self.etime = 0
        self.duration = 0
    
    def start(self):
        self.stime = time.time()

    def stop(self):
        self.etime = time.time()
        self.duration = self.etime - self.stime
          
    def elapsed(self):
        return self.duration



t = Timer()

t.start()
time.sleep(2)
t.stop()
print(t.elapsed())

题目 3:倒计时工具

要求:
创建一个类 Countdown,实现一个简单的倒计时功能:

  1. 初始化方法,接受倒计时的秒数作为参数。
  2. 一个方法 start(),从指定的秒数开始倒计时到 0,每秒打印当前剩余秒数(用 time.sleep(1))。
  3. 倒计时结束后打印 "Time's up!"

提示:
使用 time.sleep() 来暂停 1 秒。

import time

class Countdown:

	def __init__(self, sec):
		self.second = sec

	def start(self):
		for i in range(self.second, -1, -1):
			print(i)
			time.sleep(1)
		print("Time's up!")