在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被放在类的外面,表示这是一个类属性。通过调用类可以访问它的类属性。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/150944.html
微信扫一扫
支付宝扫一扫