程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(1)

Python编程从入门到实践(第九章 类)的学习总结:

发布于2019-08-06 10:28     阅读(728)     评论(0)     点赞(2)     收藏(1)


第九章 类(学习总结)
一、创建类及调用方法

二、Python2.7中创建类

三、修改属性的值:
1、直接通过实例进行修改
2、通过方法进行设置
3、通过刚发进行递增(增加特定的值)

四、继承以及Python 2.7中的继承

五、给子类定义属性和方法

六、重写父类的方法,子类中的方法名与父类相同

七、将实例用作属性

八、导入单个类

九、在一个模块中存储多个类

十、从一个模块中导入多个类,用逗号分隔

十一、导入整个模块,访问方式是module_name.class_name格式(推荐使用)

十二、导入模块中的所有类;不推荐使用,未明确指出哪些类;有同名冲突

十三、在一个模块中导入另一个模块(有依赖)

十四、Python标准库是一组模块,安装Python都包含它

十五、类编码风格

##################################
#一、创建类及调用方法
‘’‘创建和使用类,定义类,首字母大写’’’

class Dog():
    def __init__(self,name,age):

#init,类中的函数称为方法,self必不可少,且位于前面;每个与类相关联的方法调用都自动传递实参self
#初始化属性name和age,获取存储在形参name和age中的值,并存储在变量name中,该变量被关联到当前创建的实例

self.name = name
self.age = age
    # 不需要额外的信息,所以只有一个形参self
    def sit(self): 
        print(self.name.title() + "is now sitting.")
    def roll_over(self):
        print(self.name.title() + "is now roll_over.")

#根据类创建实例

my_dog = Dog('willie',6)

#访问实例的属性,使用句点表示法

print("My dog's name is " + my_dog.name.title() + ".")
print("My dog's age is " + str(my_dog.age) + ".")

#1、调用方法,创建实例后可调用类中定义的任何方法

my_dog.sit()
my_dog.roll_over()

#输出结果

My dog's name is Willie.
My dog's age is 6.
Willieis now sitting.
Willieis now roll_over.

######################
#Python2.7中创建类

#格式:class ClassName(object):
class Dog(object):

###################################
#二、根据类创建多个实例

class Dog():
    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() + " is now roll_over.")

#根据类创建2个实例

my_dog = Dog('willie',6)
your_dog = Dog('lucy',3)

#访问实例的属性,使用句点表示法

print("My dog's name is " + my_dog.name.title() + ".")
print("My dog's age is " + str(my_dog.age) + " years old.")

#调用方法

my_dog.sit()
my_dog.roll_over()

print("\nyour dog's name is " + your_dog.name.title() + ".")
print("your dog's age is " + str(your_dog.age) + " years old.")

#调用方法

your_dog.sit()
your_dog.roll_over()

#输出结果

My dog's name is Willie.
My dog's age is 6 years old.
Willie is now sitting.
Willie is now roll_over.

your dog's name is Lucy.
your dog's age is 3 years old.
Lucy is now sitting.
Lucy is now roll_over.

###################################
#三、修改属性的值:
#1、直接通过实例进行修改
#2、通过方法进行设置
#3、通过刚发进行递增(增加特定的值)

#1、直接通过实例进行修改

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
		#初始值设置为0
        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.odometer_reading = 23
my_new_car.read_odometer()

#输出结果

2016 Audi A4
This car has 23 miles on it.

#2、通过方法进行设置

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer! ")

my_new_car = Car('audi','a4','2016')
print(my_new_car.get_descriptive_name())

#通过方法进行设置

my_new_car.update_odometer(13)
my_new_car.read_odometer()

#输出结果

2016 Audi A4
This car has 13 miles on it.

#3、通过刚发进行递增(增加特定的值)

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer! ")
            #新增方法接受一个单位为英里的数字并加入到self.odometer_reading
    def increment_odometer(self,miles):
        self.odometer_reading += miles
my_used_car = Car('subaru','outback','2013')
print(my_used_car.get_descriptive_name())

my_used_car.update_odometer(2300)
my_used_car.read_odometer()

my_used_car.increment_odometer(123)
my_used_car.read_odometer()

#输出结果

2013 Subaru Outback
This car has 2300 miles on it.
This car has 2423 miles on it.

#################
#四、继承

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        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):
        """初始化父类(superclass)的属性"""
        super().__init__(make,model,year)

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

#输出结果

2016 Tesla Models

#################
#Python 2.7中的继承
#使用继承时父类要指定object

class Car(object):
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        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需要子类名 和 self两个参数"""
        super(ElectricCar, self).__init__(make,model,year)

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

#输出结果

2016 Tesla Models

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

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        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)
        #子类的属性和方法
        self.battery_size = 70
    def describe_battery(self):
        print("This car has a " + str(self.battery_size) + "-kWh battery.")

my_tesla = ElectricCar('tesla','models','2016')
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

#输出结果

2016 Tesla Models
This car has a 70-kWh battery.

#################
#六、重写父类的方法,子类中的方法名与父类相同

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        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
    def fill_gas_tank(self):
        print("This car needs a gas tank!")

class ElectricCar(Car):
    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.")
    #跟父类中的方法同名,进行重写
    def fill_gas_tank(self):
        print("This car doesn't need a gas tank!")

my_tesla = ElectricCar('tesla','models','2016')
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
my_tesla.fill_gas_tank()

#输出结果

2016 Tesla Models
This car has a 70-kWh battery.
This car doesn't need a gas tank!

#################
##七、将实例用作属性

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10
    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):
        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)
        #将Battery实例用作ElectricCar类的一个属性
        self.battery = Battery()
    def describe_battery(self):
        print("This car has a " + str(self.battery_size) + "-kWh 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.")
    #添加一个方法
    def get_range(self):
        if self.battery_size == 70:
            range = 240
        elif self.battery_size == 85:
            range = 270
        message = "This cat can go approximately " + str(range)
        message += " miles on a full charge."
        print(message)

my_tesla = ElectricCar('tesla','models','2016')
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()

#输出结果

2016 Tesla Models
This car has a 70-kWh battery.
This cat can go approximately 240 miles on a full charge.

#################
#八、导入单个类
#1、创建一个只包含Car类的模块,文件名命名为car.py

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
    def read_odometer(self):
        print("This car has " + str(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

#2、创建另一个文件my_car.py文件,导入Car类并创建实例
#打开car.py文件并导入Car类

from car import Car
my_new_car = Car('audi','a4','2016')
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23
my_new_car.read_odometer()

#输出结果

2016 audi a4
This car has 23 miles on it.

#################
#九、在一个模块中存储多个类
#1.创建car.py模块存储多个类

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
    def read_odometer(self):
        print("This car has " + str(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 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().__init__(make,model,year)
        self.battery = Battery()

#2.创建一个my_electric_car.py文件导入ElectricCar类

from car import ElectricCar
my_tesla = ElectricCar('tesla','models','2016')
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()

#输出结果

2016 tesla models
This car has a 70 kWh battery.
This car can go approximately 240 miles on a full charge.

#################
#十、从一个模块中导入多个类,用逗号分隔
#1.创建car.py模块存储多个类(同上)
#2.创建my_car.py文件导入多个类
#导入Car和ElectricCar类

from car import Car,ElectricCar
my_beetle = Car('volkswagen','beetle','2016')
print(my_beetle.get_descriptive_name().title())
my_tesla = ElectricCar('tesla','roadster','2016')
print(my_tesla.get_descriptive_name().title())

#输出结果

2016 Volkswagen Beetle
2016 Tesla Roadster

#################
#十一、导入整个模块,访问方式是module_name.class_name格式(推荐使用)
#1.创建car.py模块存储多个类(同上)
#2.创建my_car.py文件导入整个模块

import car
my_beetle = car.Car('volkswagen','beetle','2016')
print(my_beetle.get_descriptive_name().title())

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

#输出结果

2016 Volkswagen Beetle
2016 Tesla Roadster

#################
#十二、导入模块中的所有类;不推荐使用,未明确指出哪些类;有同名冲突
#1.创建car.py模块存储多个类(同上)
#2.创建my_car.py文件导入模块中的所有类

from car import *
my_beetle = Car('volkswagen','beetle','2016')
print(my_beetle.get_descriptive_name().title())

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

#输出结果

2016 Volkswagen Beetle
2016 Tesla Roadster

#################
#十三、在一个模块中导入另一个模块(有依赖)
#1.创建car.py模块存储Car类

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
    def read_odometer(self):
        print("This car has " + str(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

#2.创建electric_car.py模块存储Battery和ElectricCar
#导入car模块

from car import 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.")
    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().__init__(make,model,year)
        self.battery = Battery()

#3.从不同模块导入类

from car import Car
from electric_car import ElectricCar
my_beetle = Car('volkswagen','beetle','2016')
print(my_beetle.get_descriptive_name().title())

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

#输出结果

2016 Volkswagen Beetle
2016 Tesla Roadster

#################
#十四、Python标准库是一组模块,安装Python都包含它
#导入标准库的模块,可使用其中的函数和类

from collections import  OrderedDict

#调用OrderedDict 来常见空的字典并存储值

favorite_languages = OrderedDict()

favorite_languages['jen'] = 'python'
favorite_languages['tom'] = 'c'
favorite_languages['lily'] = 'java'
favorite_languages['lihua'] = 'python'

for name,language in favorite_languages.items():
    print(name.title()+ "'s favorite language is " + language.title() + ".")

#输出结果

Jen's favorite language is Python.
Tom's favorite language is C.
Lily's favorite language is Java.
Lihua's favorite language is Python.

#################
#十五、类编码风格
#1.类名应采用 驼峰命名法,不使用下划线
#2.实例名和模块名都采用小写格式,加下划线
#3.定义类后添加一个文档字符串
#4.类中使用一个空行来分隔方法;模块中使用两个空行来分隔类
#5.导入模块时应先导入标准库模块的import语句,再添加一个空行,导入自己编写的模块

Python编程从入门到实践基础知识:https://blog.csdn.net/louzhu_lz/article/details/90721685
Python编程从入门到实践(第三、四章的列表和元祖):https://blog.csdn.net/louzhu_lz/article/details/91354506
Python编程从入门到实践(第五章if语句学习总结):https://blog.csdn.net/louzhu_lz/article/details/91409903
Python编程从入门到实践(第六章字典学习总结):https://blog.csdn.net/louzhu_lz/article/details/91910554
Python编程从入门到实践(第七章用户输入和while循环学习总结):https://blog.csdn.net/louzhu_lz/article/details/92384649
Python编程从入门到实践(第八章函数)学习总结:https://blog.csdn.net/louzhu_lz/article/details/93377817



所属网站分类: 技术文章 > 博客

作者:紫薇

链接:https://www.pythonheidong.com/blog/article/7688/bb27031a3b54499931ef/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)