python基础三,,#创建Dog类#通常


#创建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 += milesmy_new_car = Car(‘audi‘, ‘a4‘, 2016)print(my_new_car.get_descriptive_name())my_new_car.odometer_reading = 23    #1my_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()实例,默认70my_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基础三

评论关闭