ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-12-25 11:35:08  阅读:176  来源: 互联网

标签: name self odometer year model def


# 9.1创建和使用类
## 使用类几乎可以模拟任何东西
## 创建一个类

from _typeshed import Self


class Dog:
"""一次模拟小狗的简单尝试"""

def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name #self.name=name获取与形参name相关联的值
self.age=age
### 以self为前缀的变量可以供类中所有方法使用
def sit(self):
"""模拟小狗收到命令时蹲下"""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""模拟小狗收到命令时打滚"""
print(f"{self.name} rolled over!")

## 根据类创建实例

class Dog:
"""一次模拟小狗的简单尝试"""

def __init__(self,name,age): #形参self自动向类中的方法传递指定的属性
"""初始化属性name和age"""
self.name=name
self.age=age

def sit(self):
"""模拟小狗收到命令时蹲下"""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""模拟小狗收到命令时打滚"""
print(f"{self.name} rolled over!")

my_dog=Dog('Willie',6) #指定实例的属性
print(f"My dog's name is {my_dog.name}.") #my_dog.name代码用来访问实例的属性
print(f"My dog's name is {my_dog.age} years old.")

my_dog=Dog('Willie',6)
my_dog.sit() #调用实例的方法
my_dog.roll_over()

# 9.2使用类和实例
## car类

class Car:
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性。"""
self.make=make
self.model=model
self.year=year

def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())

## 给属性指定默认值

classclass Car:
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性。"""
self.make=make
self.model=model
self.year=year
self.odometer_reading=0 #创建一个名为odometer_reading的属性,并将其初始值设为0,该值不会被传递给类的参数改变

def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name=f"{self.year} {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',2019)
print(my_new_car.get_descriptive_name)
my_new_car.read_odometer()

## 直接修改属性的值
my_new_car.odometer_reading=23
my_new_car.read_odometer()
##通过方法修改属性的值

class Car:
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性。"""
self.make=make
self.model=model
self.year=year

def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print(f"This car has {self.odometer_reading} miles on it.")
def update_odometer(self,mileage):
"""将里程碑读数设置为指定的值"""
Self.odometer_reading=mileage
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(23) #在括号内传递参数
my_new_car.read_odometer()

# 9.3继承
## 子类的方法__init__
## 一个类继承 另一个类时,它将自动获得另一个类的所有属性和方法

class Car(): """一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
### 继承时,父类必须包含在当前文件中,且位于子类前面
def get_descriptive_name(self):
long_name = f"{self.year} {self.make} {self.model}"
return long_name.title()

def read_odometer(self):
print(f"This car has {self.odometer_reading} miles on it.")

def update_odometer(self,mileage):
if mileage >= self.odometer_reading:
self.odometer_reading=mileage
else:
print("You can't roll back an odometer!")

def increment_odometer(self,miles):
self.odometer_reading +=miles

class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)
my_tesla=ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
### super() 是一个特殊函数,帮助Python将父类和子类关联起来。
### 在Python 2.7中,继承语法稍有不同,函数super() 需要两个实参:子类名和对象self

## 给子类定义属性和方法

class Car:
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性。"""
self.make=make
self.model=model
self.year=year

def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print(f"This car has {self.odometer_reading} miles on it.")
def update_odometer(self,mileage):
"""将里程碑读数设置为指定的值"""
Self.odometer_reading=mileage

class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""
初始化父类的各项属性
再初始化电动汽车特有的属性
"""
super().__init__(make, model, year)
self.battery_size=75

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()

## 重写父类的方法:
### 在子类中定义一个和父类中的某一方法同名的方法即可重写父类中相应的方法

## 将实例用作属性

class Battery:
"""一次模拟电动汽车电瓶的尝试"""
def __init__(self,battery_size=75):
"""初始化电瓶的属性"""
self.battery_size=battery_size

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

## 导入类
"""
使用from car import Car
可以从一个模块中导入多个类,使用逗号隔开
"""

标签:,name,self,odometer,year,model,def
来源: https://www.cnblogs.com/skywalker-char/p/15730078.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有