Python基础 -属性与方法

* 属性与方法 *

项目:构建一个“汽车工厂应用”以理解属性和方法在实例和类层级上的工作原理。


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. 反思

你已经学习了如何:

  • 定义和使用 实例 属性
  • 实现并调用来自对象的 方法
  • 使用 魔法方法 以获得可读的字符串表示
  • 在实际项目中应用面向对象编程原则(汽车工厂示例)

更多