Python编程从入门到实践:CH9 类

创建和使用类

  • 创建和使用类
    • 创建类的示例
    class Dog():
    	"""一次模拟小狗的简单尝试"""
    	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!")
    
    • 使用关键字class() 创建类
    • 类的名称首字母大写
    • 文档字符串描述类的功能
    • 类中的函数称为方法
    • 方法__init__() 每次根据类创建实例时都会自动调用
      • 方法中形参self必不可少
      • __init__初始化类中的属性
      • self为前缀的变量都可供类中的所有方法使用
    • 根据类创建实例
      class Dog():
      --snip--
      my_dog = Dog('willie', 6)
      
    • 访问属性
      • 使用句点表示法
        my_dog.name
        
    • 调用方法
      • 使用句点表示法
        my_dog = Dog('willie', 6)
        my_dog.sit()
        my_dog.roll_over()
        
    • 可根据需求创建多个类的实例

使用类和实例

  • 给属性指定默认值
    • 类中的每个属性都必须有初始值
    • 在方法__init__()内指定这种初始值
      def __init__(self, make, model, year):
      	"""初始化描述汽车的属性"""
      	self.make = make
      	self.model = model
      	self.year = year
      	self.odometer_reading = 0
      
  • 修改属性的值
    • 直接修改属性的值
      • 使用句点表示法通过实例直接访问它
        my_new_car.odometer_reading = 23
        
    • 通过方法修改属性的值
      • 把要修改的值传递给一个方法
      def update_odometer(self, mileage):
      	"""将里程表读数设置为指定的值"""
      	self.odometer_reading = mileage
      
    • 通过方法对属性的值进行递增
      • 将属性值递增特定的量
      def increment_odometer(self, miles):
      	"""将里程表读数增加指定的量"""
      	self.odometer_reading += miles
      

继承

子类自动继承其父类的所有属性和方法,同时还可以定义自己的属性和方法
  • 子类的方法__init__()
    • 创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值
      class ElectricCar(Car):
      	def __init__(self, make, model, year):
      		"""初始化父类的属性"""
      		super().__init__(make, model, year)
      
      • 创建子类时,父类必须包含在当前文件中,且位于子类的前面
      • 定义子类时,必须在括号内指定父类的名称
      • super()是一个特殊函数,帮助Python将父类和子类关联起来
  • 给子类定义属性和方法
    • 子类继承父类后,添加子类的新属性和新方法
      super().__init__(make, model, year)
      self.battery_size = 70
      
      def describe_battery(self):
      	"""打印一条描述电瓶容量的消息"""
      	print("This car has a " + str(self.battery_size) + "-kWh battery.")
      
  • 重写父类的方法
    • 父类的方法不符合子类的要求,可在子类中重新定义与父类同名的方法
  • 将实例用作属性
    • 将类的一部分独立出来放到一个新类中,并用新类的实例作为原先类的一个属性
      class Battery():
      	"""一次模拟电动汽车电瓶的简单尝试"""
      ————————————
      self.battery = Battery()
      

导入类

  • 导入单个类

    from car import Car
    my_new_car = Car('audi', 'a4', 2016)
    
  • 可以在一个模块中储存多个类

  • 从一个模块中导入多个类

    from car import Car, ElectricCar
    my_beetle = Car('volkswagen', 'beetle', 2016)
    my_tesla = ElectricCar('tesla', 'roadster', 2016)
    
  • 导入整个模块

    • 导入整个模块,再使用句点表示法访问需要的类
      import car
      my_beetle = car.Car('volkswagen', 'beetle', 2016)
      my_tesla = car.ElectricCar('tesla', 'roadster', 2016)
      
  • 导入模块中的所有类

    from module_name import *
    
  • 在一个模块中导入另一个模块

    • 将类存储在多个模块中时,一个模块中的类依赖于另一个模块中的类

类编码风格

  • 类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线
  • 实例名和模块名都采用小写格式,并在单词之间加上下划线
  • 对于每个类,都应紧跟在类定义后面包含一个文档字符串
  • 每个模块也都应包含一个文档字符串
  • 可使用空行来组织代码,但不要滥用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值