您的位置:

Python实例定义:创建对象的蓝图

在Python中,对象是由类创建的,它是类的实例。在Python中,类是一种定义,描述了可以从中创建对象的所有属性和方法。创建类是创建对象的蓝图。下面将从多个方面详细阐述Python中创建对象的蓝图。

一、类的定义

在Python中,可以使用 关键字定义类。定义时需要指定类的名称和父类(也可以没有父类)。类名一般采用CapWords命名规范,即每个单词首字母大写,不包含下划线。如下所示定义名为MyClass的类:

class MyClass:
    pass

上面的代码创建了一个名为MyClass的类,该类没有任何属性或方法。

类的方法可以分为两种:实例方法和类方法。实例方法需要创建类的实例,才能调用该方法。类方法无需实例,但仍然可以通过类调用。

下面的示例程序演示了类的定义和实例方法的使用:

class Car:
    def __init__(self,make,model):
        self.make = make
        self.model = model
        self.odometer_reading = 0
        
    def get_descriptive_name(self):
        long_name = f"{self.make} {self.model}"
        return long_name.title()
    
    def read_odometer(self):
        print(f"This car has {self.odometer_reading} miles on it.")

my_new_car = Car('audi','a4')
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()

执行结果如下:

Audi A4
This car has 0 miles on it.

类Car有三个属性:make,model和odometer_reading。属性odometer_reading的默认值为0。类Car还有两个实例方法:get_descriptive_name和read_odometer。调用实例方法get_descriptive_name返回汽车的描述性名称,调用实例方法read_odometer来读取里程表读数。

二、继承

继承是面向对象编程中的一个重要概念。子类通过继承父类的方法和属性来实现自己的功能。在Python中,可以直接通过将父类作为参数传递给子类来实现继承。子类可以重写父类的方法,并添加自己的方法。

下面的示例程序演示了一个子类ElectricCar继承自父类Car的情况:

class Car:
    def __init__(self,make,model):
        self.make = make
        self.model = model
        self.odometer_reading = 0
        
    def get_descriptive_name(self):
        long_name = f"{self.make} {self.model}"
        return long_name.title()
    
    def read_odometer(self):
        print(f"This car has {self.odometer_reading} miles on it.")

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model)
        self.battery_size = 75
        self.year = year
        
    def describe_battery(self):
        print(f"This car has a {self.battery_size}-kWh battery.")
        
my_tesla = ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

执行结果如下:

Tesla Model S
This car has a 75-kWh battery.

类ElectricCar继承自父类Car,子类中定义的方法describe_battery是父类中没有的方法。在子类ElectricCar的__init__方法中,通过super()函数调用了父类构造函数,以便初始化从父类继承过来的属性。

三、类的属性

在Python中,属性存储在实例中。有两种类型的属性:实例属性和类属性。实例属性是每个实例都有自己的属性,它们的值可能不同。类属性由所有实例共享,因此它们的值在所有实例中都相同。

下面的示例程序演示了类属性的创建和使用:

class Dog:
    number_of_legs = 4
    
    def __init__(self,name,age):
        self.name = name
        self.age = age

my_dog = Dog('Willie',6)
your_dog = Dog('Lucy',3)

print(my_dog.name + " has " + str(my_dog.number_of_legs) + " legs.")
print(your_dog.name + " has " + str(your_dog.number_of_legs) + " legs.")
print(Dog.number_of_legs)

执行结果如下:

Willie has 4 legs.
Lucy has 4 legs.
4

类Dog有两个实例属性:name和age,它的类属性number_of_legs用于保存狗的腿数。在类Dog的定义中,number_of_legs被放在类的外面,表示这是一个类属性。通过调用类可以访问它的类属性。