python - class

类的编码风格

1、类名应采用驼峰命名法 , 即将类名中的每个单词的首字母都大写, 而不使用下划线。 实例名和模块名都采用小写格式, 并在单词之间加上下划线。
2、对于每个类, 都应紧跟在类定义后面包含一个文档字符串。 这种文档字符串简要地描述类的功能, 并遵循编写函数的文档字符串时采用的格式约定。 每个模块也都应包含一个文档字符串, 对其中的类可用于做什么进行描述。
3、可使用空行来组织代码, 但不要滥用。 在类中, 可使用一个空行来分隔方法; 而在模块中, 可使用两个空行来分隔类。
4、需要同时导入标准库中的模块和你编写的模块时, 先编写导入标准库模块的import 语句, 再添加一个空行, 然后编写导入你自己编写的模块的import 语句。 在包含多条import 语句的程序中, 这种做法让人更容易明白程序使用的各个模块都来自何方。

用代码来学习类

# -*- coding: utf-8 -*-

"""一个可用于表示燃油汽车和电动汽车的类""" # 模块级文档字符串, 对该模块的内容做了简要的描述。 你应为自己创建的每个模块都编写文档字符串

class Car(object):
    """一次模拟汽车的简单尝试"""
    
    def __init__(self, make, model, year):
        """初始化汽车属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0 # 里程设置为0
        
    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = str(self.year) + ' ' + self.make +  ' ' + self.model
        return long_name.title()
        
    def read_odometer(self):
        """打印一条指出汽车里程的消息"""
        print "This car has " + str(self.odometer_reading) + " miles on it." 
    
    '''
    def update_odometer(self, mileage): # 通过方法修改属性的值
        """将里程表读数设置为指定的数值"""
            self.odometer_reading = mileage # 接受一个里程值,并存在变量中
    '''         
    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 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."
        
    def get_range(self):
        """打印一条描述电瓶续航里程的消息"""
        if self.battery_size == 70:
            range = 240
        elif self.battery_size ==85:
            range = 270
            
        message = "This car can go approximately " + str(range)
        message += " miles on a full charge."
        print message
        
class ElectricCar(Car):
    """模拟电动汽车的独特之处"""
    
    def __init__(self, make, model, year):
        """
        初始化父类属性,再初始化电动汽车特有的属性
        """
        
        super(ElectricCar, self).__init__(make, model, year)
        self.battery = Battery()
# -*- coding: utf-8 -*-
import car

my_bettle = car.Car('volkswagen', 'beetle', 2016)
'''
 我们导入了整个car 模块。 接下来, 
 我们使用语法 module_name.class_name 访问需要的类。
 '''
print my_bettle.get_descriptive_name()

my_tesla = car.ElectricCar('tesla', 'roadster', 2016)
print my_tesla.get_descriptive_name()

运行结果

2016 Volkswagen Beetle
2016 Tesla Roadster

代码

from car import ElectricCar

my_tesla = ElectricCar('tesla', 'model s', 2016)

print my_tesla.get_descriptive_name()
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()

运行结果

2016 Tesla Model S
This car has a 70-kwh battery.
This car can go approximately 240 miles on a full charge.
    原文作者:庵下桃花仙
    原文地址: https://www.jianshu.com/p/294fc29599c7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞