* 属性与方法 *
项目:构建一个“汽车工厂应用”以理解属性和方法在实例和类层级上的工作原理。
01. 学习目标
通过本课的学习,您将能够:
- 理解属性与方法之间的区别
- 区分实例属性和类属性
- 实现特殊方法(双下划线方法),如
__str__ - 使用这两种类型的属性设计可重用和结构化的类
02. 问题场景
您正在开发一个小型“汽车工厂”系统。
每辆车应该有自己的型号和品牌(实例属性),
但所有汽车共享相同的轮子数量(类属性)。
您还将学习如何使用特殊方法整洁地表示对象。
*03. 第一步 – 属性 *
属性是属于对象的变量。
它们保存对象的数据,并通过.运算符访问。
class Person:
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
p1 = Person("Sabin", 30)
print(p1.name) # Sabin
print(p1.age) # 30
*04. 第2步 – 方法 *
方法是在类内部定义的函数,通常用于操作属性。
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} 正在叫! / {self.name}가 짖고 있어요!")
d = Dog("Buddy")
d.bark()
05. 第三步 – 实例属性与类属性
属性可以存在于两个层次:
- 实例属性 → 每个对象独有
- 类属性 → 所有对象共享
class Student:
school = "Python Academy" # 类属性
def __init__(self, name):
self.name = name # 实例属性
s1 = Student("Tom")
s2 = Student("Anna")
print(s1.name, s1.school) # 汤姆 Python 学院
print(s2.name, s2.school) # 安娜 Python 学院
06. 第四步 – 特殊方法(双下划线方法)
特殊方法(也称为 dunder 方法)以双下划线 __ 开头和结尾。
__str__ 定义了一个对象应如何作为字符串显示。
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def __str__(self):
return f"'{self.title}' by {self.author}"
b = Book("Python Basics", "Sabin")
print(b) # 'Python Basics' by Sabin
07. 第五步 – 实践示例
示例 1: 汽车类
class Car:
wheels = 4 # 类属性
def __init__(self, brand, model):
self.brand = brand
self.model = model
def info(self):
print(f"{self.brand} {self.model} 具有 {Car.wheels} 个轮子。")
c1 = Car("特斯拉", "Model 3")
c1.info() # 特斯拉 Model 3 有 4 个轮子。
示例 2:计数器类
class Counter:
count = 0 # 类属性
def __init__(self):
Counter.count += 1
c1 = Counter()
c2 = Counter()
print("对象总数:", Counter.count) # 2
08. 第六步 – 迷你项目:汽车工厂应用
让我们将所学的知识结合起来,做一个小项目。
class Car:
factory_name = "Python Motors" # 类属性
total_cars = 0 # 类计数器
def __init__(self, brand, model):
self.brand = brand
self.model = model
Car.total_cars += 1
def info(self):
print(f“{self.brand} {self.model} (由 {Car.factory_name} 制造)“)
def __str__(self):
return f“汽车: {self.brand} {self.model}“
# 创建汽车
c1 = Car("特斯拉", "Model 3")
c2 = Car("现代", "Ioniq 6")
c1.info()
c2.info()
print("生产的汽车总数:", Car.total_cars)
输出:
Tesla Model 3(由 Python Motors 制造)
Hyundai Ioniq 6(由 Python Motors 制造)
总生产汽车数量:2
09. 反思
你已经学习了如何:
- 定义和使用 实例 和 类 属性
- 实现并调用来自对象的 方法
- 使用 魔法方法 以获得可读的字符串表示
- 在实际项目中应用面向对象编程原则(汽车工厂示例)

