Python类与对象:从定义到继承的完整指南

苏见山
苏见山
发布时间:2026-10-11 | 3人浏览过
原创

本文深入解析Python面向对象编程的核心概念,涵盖类的定义、__init__初始化方法、self参数的作用、属性修改与继承机制。通过Dog、Car及ElectricCar等实例,演示方法调用、属性更新及super()函数的使用,并介绍OrderedDict模块的应用与模块导入技巧。

Python类的定义与实例化

在Python中,class关键字用于定义类,类名通常遵循首字母大写的命名规范。类的核心在于其特殊方法__init__,该方法在实例化类时自动运行,用于初始化对象的属性。定义方法时,self参数必须位于最前,它指代对象本身。调用方法时,无需为self赋值,Python会自动提供该值。

以下代码展示了如何定义一个简单的Dog类,包含初始化方法及sit和roll_over两个实例方法:

class Dog():
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def sit(self):
    print(self.name.title() + " is now sitting.")
  def roll_over(self):
    print(self.name.title() + " rolled over!")
 
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
 
运行结果:
My dog's name is Willie.
My dog is 6 years old.

属性管理与修改

实例化类后,可通过句点表示法直接访问或修改属性。此外,通过定义方法来修改或递增属性值是更推荐的做法,这有助于在修改过程中加入逻辑校验。例如,Car类中定义了update_odometer和increment_odometer方法来管理里程表读数:

class Car():
  def __init__(self, make, model, year):
    self.make = make
    self.model = model
    self.year = year
    self.odometer_reading = 0 #<- here
 
  def get_descriptive_name(self):
    long_name = str(self.year) + ' ' + self.make + ' ' + self.model
    return long_name.title()
 
  def read_odometer(self):
    print("This car has " + str(self.odometer_reading) + " miles on it.")
 
  def update_odometer(self, mileage):
    self.odometer_reading = mileage
 
  def increment_odometer(self, miles):
    self.odometer_reading += miles

通过update_odometer可以直接设置里程数,而increment_odometer则用于增加里程数。这种设计使得属性管理更加灵活和安全。

类的继承机制

继承允许子类获得父类的属性和方法。原有类称为父类,新类称为子类。创建子类实例时,需先给父类属性赋值,因此父类必须位于子类前面。使用super()函数可以将父类和子类关联起来,并调用父类的__init__方法。

以下代码展示了如何定义ElectricCar类,继承自Car类:

class Car():
  --snip--
 
class ElectricCar(Car):
  def __init__(self, make, model, year):
    super().__init__(make, model, year)
 
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
 
运行结果:
2016 Tesla Model S

子类可以定义自己的属性和方法,例如ElectricCar类中添加了battery_size属性和describe_battery方法:

class Car():
  --snip--
 
class ElectricCar(Car):
  def __init__(self, make, model, year):
    super().__init__(make, model, year)
    self.battery_size = 70
 
  def describe_battery(self):
    print("This car has a " + str(self.battery_size) + "-kWh battery.")
 
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
 
运行结果:
2016 Tesla Model S
This car has a 70-kWh battery.

模块与OrderedDict的应用

类可以保存为.py文件形成模块。导入单个类使用from model_name import class_name,导入多个类使用from model_name import class1, class2,导入所有类使用from model_name import *,导入整个模块使用import model_name。此外,可在模块中导入另一个模块。

collections模块包含OrderedDict类,该类记录键值对的顺序。以下代码展示了如何使用OrderedDict:

from collections import OrderedDict
 
favorite_languages = OrderedDict()
 
favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'c'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'python'
 
for name, language in favorite_languages.items():
  print(name.title() + "'s favorite language is " +
language.title() + ".")
 
运行结果:
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.

以上就是Python类与对象:从定义到继承的完整指南的详细内容,更多关于Python面向对象编程、类与继承、模块管理的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表