Python入门 — 类

[复制链接]
发表于 2025-10-25 03:40:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
面向对象编程中,编写表现实际天下中的事物和情形的(class),并基于这些类来创建对象(object)。根据类来创建对象称为实例化,如许就可以使用类的实例(instance)
一、创建类
  1. class Dog:
  2.     def __init__(self, name, age):
  3.         """初始化属性 name 和 age"""
  4.         self.name = name
  5.         self.age = age
  6.     def sit(self):
  7.         """模拟小狗收到命令时坐下"""
  8.         print(f"{self.name} 坐下")
  9.     def roll_over(self):
  10.         """模拟小狗收到命令时打滚"""
  11.         print(f"{self.name} 打滚")
复制代码
Dog 类创建的每个实例都将存储名字和年事,而且每条小狗都有坐下(sit())和打滚(roll_over())的本事。
       __init__() 方法:类中的函数称为方法,__init__() 是一个特别方法,每当根据 Dog 类创建新实例时,Python 都会自动运行它。在这个方法的名称中,开头和末端各有两个下划线,这是一种约定,可以制止 Python 默认方法与平常方法发生名称辩论。务必确保 __init__() 的两边都有两个下划线,否则当你使用类来创建实例时,将不会自动调用这个方法。
       __init__() 方法界说成包罗三个形参:self、name 和 age。在这个方法的界说中,形参 self 必不可少,而且必须位于其他形参的前面。
       当 Python 调用这个方法来创建 Dog 实例时,将自动传入实参 self。每个与实例相干联的方法调用都会自动通报实参 self,该实参是一个指向实例本身的引用,让实例可以大概访问类中的属性和方法。当我们创建 Dog 实例时,Python 将调用 Dog 类的 __init__() 方法。我们将通过实参向 Dog() 通报名字和年事;self 则会自动通报,不必要我们来通报。
       在 __init__() 方法内界说的两个变量都有前缀 self 。以 self 为前缀的变量可供类中的全部方法使用,可以通过类的恣意实例来访问。self.name = name 获取与形参 name 相干联的值,并将其赋给变量 name,然后该变量被关联到当前创建的实例。像如允许通过实例访问的变量称为属性。
       Dog 类还界说了别的两个方法:sit() 和 roll_over() 。由于这些方法实行时不必要额外的信息,因此只有一个形参 self。
二、创建实例

在上述创建类的根本上,我们可以根据类来创建类的实例
  1. my_dog = Dog('LL', 3)
复制代码
如许就创建好实例了,接下来可以使用它的方法和属性了。
1、访问属性
  1. my_dog.age
复制代码
2、调用方法
  1. my_dog.sit()
  2. my_dog.roll_over()
复制代码
三、使用类和实例

1、创建时给定属性默认值
  1. class Car:
  2.     def __init__(self, make, model, year):
  3.         self.make = make
  4.         self.model = model
  5.         self.year = year
  6.         self.meter = 0   # 默认为0
  7.     def update_meter(self, mile):
  8.         self.meter = mile
复制代码
2、修改属性的值

修改属性的值紧张有三种方法:通过实例修改,通过方法设置,以及通过方法递增(增长特定的值)。
实例修改:
  1. my_car = Car('aaa', 'a8', 2025)
  2. my_car.meter = 100
  3. # 实例 my_car 中找到属性 meter,并将其值设置为 100
复制代码
方法修改:
  1. my_car = Car('aaa', 'a8', 2025)
  2. my_car.update_meter(200)
复制代码
属性的值递增修改:也是使用实例的方法举行修改,可以试试。
四、继承

       要编写的类是一个既有的类的特别版本,可使用继承。当一个类继承另一个类时,将自动得到后者的全部属性和方法。原有的类称为父类,而新类称为子类。子类不但继承了父类的全部属性和方法,还可界说本身的属性和方法。
1、子类的 __init__() 方法

        在既有的类的根本上编写新类,通常要调用父类的 __init__() 方法。这将初始化在父类的 __init__() 方法中界说的全部属性,从而让子类也可以使用这些属性。
  1. class Car:
  2.     def __init__(self, make, model, year):
  3.         """初始化描述汽车的属性"""
  4.         self.make = make
  5.         self.model = model
  6.         self.year = year
  7.         self.meter = 0
  8.     def get_descriptive_name(self):
  9.         long_name = f"{self.year} {self.make} {self.model}"
  10.         return long_name.title()
  11.     def read_meter(self):
  12.         print(f"这车开了 {self.meter} km")
  13.     def update_meter(self, mile):
  14.         if mile >= self.meter:
  15.             self.meter = mile
  16.         else:
  17.             print("只能增加,不能减少的,孩子")
  18.     def increment_meter(self, miles):
  19.         self.meter += miles
  20. class ElectricCar(Car):
  21.     """电动汽车"""
  22.     def __init__(self, make, model, year):
  23.         """初始化父类的属性"""
  24.         super().__init__(make, model, year)
  25.         my_uu = ElectricCar('BYD', 'UU', 2025)
  26.         print(my_uu.get_descriptive_name())
复制代码
电动汽车是汽车的子类,具备 Car 类的全部功能。在界说子类时,必须在括号内指定父类的名称。__init__() 方法继承创建 Car 实例所需的信息,super() 是一个特别的函数,让我们可以大概调用父类的方法。父类也称为超类
2、给子类界说属性和方法
  1. class ElectricCar(Car):
  2.     """电动汽车"""
  3.     def __init__(self, make, model, year):
  4.         """初始化父类的属性"""
  5.         super().__init__(make, model, year)
  6.         my_uu = ElectricCar('BYD', 'UU', 2025)
  7.         print(my_uu.get_descriptive_name())
  8.         # 新增属性
  9.         self.battery_size = 40
  10.         # 新增方法
  11.     def describe_battery(self):
  12.         print(f"电池容量为{self.battery_size}-kWh.")
复制代码
3、重写父类中的方法

在子类中界说一个与要重写的父类方法同名的方法。如许,Python 将忽略这个父类方法,只关注在子类中界说的相应方法。
4、将实例用作属性

使用代码模拟实物时,你大概会发现本身给类添加了太多细节:属性和方法越来越多,文件越来越长。在这种环境下,大概必要将类的一部分提取出来,作为一个独立的类。将大型类拆分成多个协同工作的小类,这种方法称为组合。
  1. class Car:
  2.     #####
  3. class Battery:
  4.     def __init__(self, battery_size=75):
  5.         """初始化电池的属性"""
  6.         self.battery_size = battery_size
  7.     def describe_battery(self):
  8.         print(f"电池容量为-{self.battery_size}-kWh.")
  9. class ElectricCar(Car):
  10.     """电动汽车"""
  11.     def __init__(self, make, model, year):
  12.         """初始化父类的属性"""
  13.         super().__init__(make, model, year)
  14.         my_uu = ElectricCar('BYD', 'UU', 2025)
  15.         print(my_uu.get_descriptive_name())
  16.         self.battery = Battery()
复制代码
       界说了一个名为 Battery 的新类,在 ElectricCar 类中,添加一个名为 self.battery 的属性。这行代码让Python 创建一个新的 Battery 实例。当 __init__() 方法被调用时,都将实行该操纵,因此如今每个 ElectricCar 实例都包罗一个自动创建的 Battery 实例。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表