Python类与对象:从定义到继承的完整指南
本文深入解析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面向对象编程、类与继承、模块管理的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









