python-8.类

一、类的创建和实例

class Car():
	"""docstring for 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

my_new_car = Car("audi","a4","2018")
print(my_new_car.get_descriptive_name())
1.方法与属性

方法:类中的函数称为方法

  • __init__()是一个特殊的方法,当创建类的实例时,会自动执行这个函数。
  • 调用每个与类相关联的方法时都会自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

属性:在类中以self为前缀的变量

  • 类中所有的方法都可以使用属性。
  • 类的任何实例都可以访问属性。
  • 当类中的属性指定了初始值时,初始化实例时不必再为该属性指定初始值。
class Car():
	"""docstring for Car"""
	def __init__(self, make, model, year):
		self.make = make
		self.model = model
		self.year = year
		self.odometer_reading = 0
    ...

my_new_car = Car("audi","a4","2018")
...
2. 创建实例
my_new_car = Car("audi","a4","2018")
3.修改属性的值
  • 直接修改
class Car():
	"""docstring for Car"""
	def __init__(self, make, model, year):
        ...
		self.odometer_reading = 0
    ...

my_new_car = Car("audi","a4","2018")
my_new_car.odometer_reading = 23
  • 通过方法修改(优)
class Car():
	"""docstring for Car"""
	def __init__(self, make, model, year):
		...
		self.odometer_reading = 0
    ...

	def update_odometer(self,mileage):
		self.odometer_reading=mileage

my_new_car = Car("audi","a4","2018")
my_new_car.update_odometer(23)

二、继承

1. 子类的创建
class Car():
    ...
    
class ElectriCar(Car):
	"""docstring for ElectriCar"""
	def __init__(self, make, model, year):
        super().__init__(make, model ,year)
        
my_tesla = ElectriCar("tesla", "model s", "2018")
pritn(my_tesla.p.get_descriptive_name())
  • 定义子类时,必须在括号内指定父类的名称。
  • super()函数,将父类和子类关联起来,使子类实例包含父类的所有属性。
  • 创建子类实例时,给父类所有未指定初始值的属性赋值。
2. 子类的属性和方法
class Car():
    ...
    
class ElectriCar(Car):
	"""docstring for ElectriCar"""
	def __init__(self, make, model, year):
		super().__init__(make, model ,year)
		self.battery_size = 70

	def describe_battery(self):
		"""打印一条描述电瓶容量的消息"""
		print("This car has a "+ str(self.battery_size) "-kwh battery")

my_tesla = ElectriCar("tesla", "model s", "2018")
pritn(my_tesla.p.get_descriptive_name())
my_tesla.describe_battery()
3. 重写父类的方法
class ElectriCar(Car):
    ...
	def fill_gas_tank(self):
		print("This car doesn't need a gas tank!")

4. 将实例用作属性
class ElectriCar(Car):
	"""docstring for ElectriCar"""
	def __init__(self, make, model, year):
		super().__init__(make, model ,year)
		self.battery = Battery()

class Battery():
	def __init__(self,battery_size = 70):
		self.battery_size = battery_size

	def describe_battery(self):
		"""打印一条描述电瓶容量的消息"""
		print("This car has a "+ str(self.battery_size) "-kwh battery")

my_tesla = ElectriCar("tesla", "model s", "2018")
my_tesla.battery.describe_battery()

三、类的导入

car 指 模块。Car, ElectricCar 指 类

  1. 导入单个类
from car import Car
  1. 在一个模块中导入多个类
from car import Car,ElectricCar
  1. 导入整个模块
import Car
  1. 导入模块中的所有类(不推荐!不推荐!不推荐!)
from car import *
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值