Python 类

这篇博客详细介绍了Python中的类,包括如何创建和使用类,访问和修改属性,调用方法,创建多个实例,以及给属性指定默认值。还讨论了类的继承机制,如何创建子类,以及不同方式导入类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


(1) 创建和使用类

class Dog():
    """一次模拟小狗的简单尝试"""
    # 在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。
    def __init__(self, name, age):
        """初始化属性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!")
根据类创建实例

(2) 访问属性

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.

(3) 调用方法

my_dog2 = Dog('willie', 6)
my_dog2.sit()
my_dog2.roll_over()

输出

Willie is now sitting.
Willie rolled over!

(4) 创建多个实例

m_dog = Dog('willie', 6)
y_dog = Dog('lucy', 3)
print("My dog's name is " + m_dog.name.title() + ".")
print("My dog is " + str(m_dog.age) + " years old.")
m_dog.sit()
print("\nYour dog's name is " + y_dog.name.title() + ".")
print("Your dog is " + str(y_dog.age) + " years old.")
y_dog.sit()

输出

My dog's name is Willie.
My dog is 6 years old.
Willie is now sitting.

Your dog's name is Lucy.
Your dog is 3 years old.
Lucy is now sitting.

(5) 使用类和实例

class Car():
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
    
    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()

my_new_car = Car('audi', 'a6', 2019)
print(my_new_car.get_descriptive_name())

输出

2019 Audi A6

(6) 给属性指定默认值
添加一个名为odometer_reading的属性,其初始值总是为0。

class Car2():
    def __init__(self, make, model, year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    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.")

my_new_car2 = Car2('audi', 'a8', 2019)
print(my_new_car2.get_descriptive_name())
my_new_car2.read_odometer()

输出:

2019 Audi A8
This car has 0 miles on it.
修改属性的值

(7) 直接修改属性的值

my_new_car2 = Car2('audi', 'a4', 2019)
print(my_new_car2.get_descriptive_name())
my_new_car2.odometer_reading = 23
my_new_car2.read_odometer()

输出:

2019 Audi A4
This car has 23 miles on it.

(8) 通过方法修改属性的值

class Car3():
    def __init__(self, make, model, year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    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

my_new_car3 = Car3('audi', 'a4', 2020)
print(my_new_car3.get_descriptive_name())
my_new_car3.update_odometer(23)
my_new_car3.read_odometer()

输出:

# 2020 Audi A4
# This car has 23 miles on it.

(9) 继承
创建子类时,父类必须包含在当前文件中,且位于子类前面。

class Car():
    """一次模拟汽车的简单尝试"""

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    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):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")

    def increment_odometer(self, miles):
        self.odometer_reading += miles

(10) 定义子类ElectricCar。定义子类时必须在括号内指定父类的名称。

class ElectricCar(Car):
    """电动汽车的独特之处"""

    def __init__(self, make, model, year):
        """调用ElectricCar父类的方法__init__(),让ElectricCar实例包含父类的所有属性。"""
        super().__init__(make, model, year)


my_tesla = ElectricCar('tesla', 'model s', 2019)
print(my_tesla.get_descriptive_name())

输出:

2019 Tesla Model S

(11) 导入单个类
import语句让Python打开模块car,并导入其中的Car类。

from car import Car
my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23

(12) 导入模块中的多个类

from car import Car, ElectricCar
my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_descriptive_name())
my_tesla = ElectricCar('tesla', 'roadster', 2019)
print(my_tesla.get_descriptive_name())

(13) 导入整个模块

import car
my_beetle = car.Car('volkswagen', 'beetle', 2016)
print(my_beetle.get_descriptive_name())
my_tesla = car.ElectricCar('tesla', 'roadster', 2016)
print(my_tesla.get_descriptive_name())

(14) 导入模块中的所有类

from module_name import *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值