码迷,mamicode.com
首页 > 编程语言 > 详细

python基础三

时间:2018-12-24 02:34:32      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:模块   使用   赋值   date   运行   一个   驼峰命名   类方法   导入   

#创建Dog类
#通常来说首字母大写是类, 小写的则是根据类创建的实例
class Dog():
    #__init__()是一个特殊的方法
    #每当你根据dog类创建新实例时, 会自动调用
    #形参self必不可少, python调用该方法时会自动传入实参self
 
    def __init__(self, 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!")

#self是一个指向实例本身的引用   
my_dog = Dog(‘willie‘, 6)
my_dog.sit()
my_dog.roll_over()
print("My dog‘s name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
#给属性指定默认值
# 类中的每个属性都要有初始值, 不管是0还是null
#在设置默认值时, 在__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 = 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.")

my_new_car = Car(‘audi‘, ‘a4‘, 2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
#修改属性值
#1.直接通过实例修改
#2通过方法进行设置
#3通过方法进行递增
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 = 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): #2
        self.odometer_reading = mileage
    
    def increment_odometer(self, miles):#3
        self.odometer_reading += miles

my_new_car = Car(‘audi‘, ‘a4‘, 2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23    #1
my_new_car.update_odometer(23)      #2
#继承
#一个类继承另一个类时, 将自动获得另一个类的所有属性和方法, 同时还可以定义自己的属性和方法
#模拟电动汽车, 一种特殊的汽车
#创建子类时, 父类必须包含在当前文件中, 且位于子类前
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 = 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): #2
        self.odometer_reading = mileage
    
    def increment_odometer(self, miles):#3
        self.odometer_reading += miles

#创建子类的实例时, python首先需要给父类所有属性赋值
class ElectricCar(Car):#定义子类时, 必须在括号内指定父类的名称
    ‘‘‘电动车的独特之处‘‘‘
    def __init__(self, make, model, year):
        ‘‘‘初始化父类的属性‘‘‘
        #让子类调用父类的__init__()
        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 = ElectricCar(‘tesla‘, ‘model s‘, 2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery() #测试子类方法

#重写父类的方法
#可在子类中定义这样的方法, 只要它与要重写的父类方法同名, python将不再考虑父类方法

#将实例用作属性
#例如在不断给ElectricCar类添加细节时, 发现其中包括很多专门针对汽车电瓶的属性和方法
#可将这些提取出来, 放到另一个名为Battery的类中, 并将一个Battery实例用作ElectricCar类的一个属性

class Car():
    ###

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.")

class ElectricCar(Car):
    def __init__(self, make, model, year):
        super().__init__(make, model, year)
        self.battery = Battery() #添加了一个名为self.battery的属性
        #上行代码创建了一个新的Battery()实例,默认70

my_tesla = ElectricCar(‘tesla‘, ‘model s‘, 2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
#python允许将类存储到模块当中, 然后在主程序中导入
#微妙的命名问题, 单纯的类直接用直观命名, 如car.py
#使用这些类的程序使用更具体的名字, 如my_car.py
#在模块文件开头, 应该给出详尽的注释
#from car import Car 表示打开模块car(因为文件名是car.py)并导入其中的Car类
#可以在一个module中存储多个类, 也可以在一个模块中导入多个类
#在一个模块中导入另一个模块, 有时候需要将类分散到多个模块

#模块与类的区别?
#一个模块中可能包含多个类

#自定义工作流程
#一开始应让代码结构尽可能简单, 先尽可能在一个文件中完成工作, 确定一切正常运行后, 再将类进行移植

#类编码风格
#类名应采用驼峰命名法, 即类名中每个单词首字母大写, 不用下划线. 实例名和模块名采用小写和下划线
#对于每个类, 要有描述说明

python基础三

标签:模块   使用   赋值   date   运行   一个   驼峰命名   类方法   导入   

原文地址:https://www.cnblogs.com/sayiqiu/p/10166083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!