python入门学习:8.类

python入门学习:8.类

关键点:

8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类

8.1 创建和使用类

??面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。根据类来创建对象被称为实例化,这让你能够使用类。
8.1.1 创建dog类
??下面创建一个dog类:

 1calss Dog(): 2 3    def __init__(self,name,age): 4        self.name = name 5        self.age = age 6 7    def sit(self): 8        print(self.name.title() + " is now sitting.") 910    def roll_over(self):11        print(self.name.title() + " rolled over!")
  • 方法__init__():

??__init__()是一个特殊的方法,每当根据Dog类创建新实例时,python都会自动运行它。在这个方法中开头和结尾都是两个下划线,这是python的约定俗称。其中__init__()函数的定义中形参self是必不可少的,还必须位于其他参数前面。python调用__init__()创建Dog类实例时将自动传入实参self,每个与类相关联的方法调用都自动传入实参self,它是一个指向实例化本身的引用,然实例能够访问类中的属性和方法。

  • 在python2.7中创建类:
    ??在python2.7中创建类时,需要做些修改--在括号内包含单词object
1class ClassName(object):2    --snip--

8.1.2 根据类创建实例
??这里使用的是前面创建的Dog类。我们创建一个实例my_dog,调用__init__()方法,并设置属性name和age。方法__init__()并未显示包含return语句,但是python自动返回一个表示小狗的实例给my_dog

1class Dog():2    -- snip --34my_dog = Dog(‘willie‘,6)#创建一个实例5print("My dog‘s name is " + my_dog.name.title()+".")6print("My dog‘s age is " + str(my_dog.age)+".")
  • 访问属性:
    my_dog.name
  • 调用方法:
    my_dog.sit()
    mt_dog.roll_over()
  • 创建多个实例
1my_dog = Dog(‘willie‘,6)#创建一个实例2you_dog = Dog(‘lucy‘,5)#创建一个实例

8.2 使用类和实例

8.2.1 Car类
??下面编写一个汽车类

 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7 8    def get_descriptive_name(self): 9        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model10        return long_name.title()1112my_new_car = Car(‘audi‘,‘a4‘,2016)13print(my_new_car.get_descriptive_name())

8.2.2 修改属性的值

  • 直接修改属性值
 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7        self.odometer_reading = 0 8 9    def get_descriptive_name(self):10        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model11        return long_name.title()12    def read_odometer(self):13        print("This car has " + str(self.odometer_reading) + " miles on it.)14my_new_car = Car(‘audi‘,‘a4‘,2016)15print(my_new_car.get_descriptive_name())16my_new_car.odometer_reading = 23   #直接修改17my_new_car.read_odometer()18
  • 通过方法修改属性值
 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7        self.odometer_reading = 0; 8 9    def get_descriptive_name(self):10        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model11        return long_name.title()1213    def read_odometer(self):14        print("This car has " + str(self.odometer_reading)+ " miles on it.")1516    def update_odometer(self,mileage):17        self.odometer_reading = mileage1819my_new_car = Car(‘audi‘,‘a4‘,2016)2021print(my_new_car.get_descriptive_name())22#my_new_car.odometer_reading = 2323my_new_car.update_odometer(23)   #通过方法修改属性24my_new_car.read_odometer()

8.3 继承

??一个类继承另一个类时,它将自动得到另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
8.3.1 子类的方法__init__()

??创建子类的实例时,python首先需要完成的任务是给父类的所有属性赋值。为此,子类的方法__init__()需要父类施以援手。

 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7        self.odometer_reading = 0; 8 9    def get_descriptive_name(self):10        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model11        return long_name.title()1213    def read_odometer(self):14        print("This car has " + str(self.odometer_reading)+ " miles on it.")1516    def update_odometer(self,mileage):17        self.odometer_reading = mileage1819class ElectricCar(Car):    #继承Car20    def __init__(self,make,model,year):21        #初始化父类的属性22        super().__init__(make,model,year)  #关联父类和子类2324my_tesla = ElectricCar(‘tesla‘,‘model s‘,2016)25print(my_tesla.get_descriptive_name())

8.3.2 给子类定义属性和方法
??给子类添加新的属性和方法

 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7        self.odometer_reading = 0; 8 9    def get_descriptive_name(self):10        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model11        return long_name.title()1213    def read_odometer(self):14        print("This car has " + str(self.odometer_reading)+ " miles on it.")1516    def update_odometer(self,mileage):17        self.odometer_reading = mileage181920class ElectricCar(Car):21    def __init__(self,make,model,year):22    #初始化父类的属性23        super().__init__(make,model,year)24        self.battery_size = 70    #新增加的属性在__init__()函数中修改2526    def describe_battery(self):   #新增加的方法27        print("This car has a " + str(self.battery_size) + "-kwh battery.")2829my_tesla = ElectricCar(‘tesla‘,‘model s‘,2016)30print(my_tesla.get_descriptive_name())31my_tesla.describe_battery()

8.3.3 重写父类的方法
??对于父类的方法,子类可以对其重写。当创建一个实例对象调用该方法时会自动忽略父类方法。

 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7        self.odometer_reading = 0; 8 9    def get_descriptive_name(self):10        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model11        return long_name.title()1213    def read_odometer(self):14        print("This car has " + str(self.odometer_reading)+ " miles on it.for car")1516    def update_odometer(self,mileage):17        self.odometer_reading = mileage181920class ElectricCar(Car):21    def __init__(self,make,model,year):22    #初始化父类的属性23        super().__init__(make,model,year)24        self.battery_size = 702526    def describe_battery(self):27        print("This car has a " + str(self.battery_size) + "-kwh battery.")28    def read_odometer(self): #重写29        print("This car has " + str(self.odometer_reading)+ " miles on it. for ElectricCar") 30my_tesla = ElectricCar(‘tesla‘,‘model s‘,2016)31print(my_tesla.get_descriptive_name())32my_tesla.describe_battery()33my_tesla.read_odometer()     #调用子类

8.3.4 将实例用作属性
??使用代码模拟实物时,你可能会发现自己给自己添加的细节越来越多:属性和方法清单以及文件都越来越长。在这种情况下,可能需要将类的一部分作为独立的类提取出来。可以将大类拆分成多个协同工作的小类。

 1class Car(): 2 3    def __init__(self,make,model,year): 4        self.make = make 5        self.model = model 6        self.year = year 7        self.odometer_reading = 0; 8 9    def get_descriptive_name(self):10        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model11        return long_name.title()1213    def read_odometer(self):14        print("This car has " + str(self.odometer_reading)+ " miles on it.for car")1516    def update_odometer(self,mileage):17        self.odometer_reading = mileage1819class Battery():20    def __init__(self,battery_size=70):21        self.battery_size = battery_size2223    def describe_battery(self):24        print("This car has a " + str(self.battery_size) + "-kwh battery.")2526class ElectricCar(Car):27    def __init__(self,make,model,year):28        super().__init__(make,model,year)29        self.battery = Battery()           #自动创建一个battery实例3031my_tesla = ElectricCar(‘tesla‘,‘model s‘,2016)32print(my_tesla.get_descriptive_name())33my_tesla.battery.describe_battery()   

8.4 导入类

8.4.1 导入单个类
??通过import导入类。from 模块名 import 类名

1from car import Car2my_new_car = Car(‘audi‘,‘a4‘,2016)3print(my_new_car.get_descriptive_name())4my_new_car.odometer_reading = 235my_new_car.read_odometer()

8.4.2 从一个模块导入多个类
??通过import导入多个类,from 模块名 类1,类2

1from car import Car,ElectricCar2my_tesla = ElectricCar(‘tesla‘,‘model s‘,2016)3print(my_tesla.get_descriptive_name())4my_tesla.battery.describe_battery() 5my_tesla.battery.get_range()

8.4.3 导入整个模块
??导入整个模块:import 模块名

1import car2my_beetle = car.Car(‘volkswagen‘,‘beetlw‘,2016)3print(my_beetle.get_descriptive_name())4my_tesla= car.ElectricCar(‘tesla‘,‘model s‘,2016)5print(my_tesla.get_descriptive_name())

8.4.4 导入模块中的所有类
??导入模块中的所有类:from module_name import *
8.4.5 在一个模块中导入另一个模块
??有时候,需要将类分散到多个模块中,以避免模块过大,或在一个模块中存储不相关的类。将类类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。在这种情况下,可在前一个模块中导入必要的类。

1#导入Car2from car import Car 3#导入 ElectricCar(electric_car 依赖car)4from electric_car import ElectricCar 56my_beetle = Car(‘volkswagen‘,‘beetle‘,2016)7print(my_beetle.get_descriptive_name())8my_tesla = Car(‘tesla‘,‘model s‘,2016)9print(my_tesla.get_descriptive_name())

原文地址:https://www.cnblogs.com/ywx123/p/10068363.html

时间: 2024-08-11 03:36:20

python入门学习:8.类的相关文章

python 入门学习 载抄

python入门 解释型语言 和编译型语言 计算机本身不能识别高级语言,当我们运行一个程序的时候,需要一个“翻译” 来把 高级语言转换成计算机能读懂的语言. “翻译”过程分两种: 编译 编译型语言在执行程序前,首先会通过编译器执行一个编译的过程,把程序编译成机器语言. 之后,程序再次运行的时候,就不要“翻译”了,而是可以直接执行.比如C语言. 编译型语言的优点在于在运行程序的时候不用解释,可直接利用已经翻译过的文件. 解释 解释型语言就没有编译的过程,而是在程序运行的时候,通过解释器逐行解释代码

Python入门学习:1.变量和简单的数据类型

python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用 ??变量,顾名思义是一个可变的量,每个变量都存储一个值--与变量关联的信息. 1message = "hello world!"2# message 是一个变量3print(message) ??在python中使用变量时,需要遵循一些规则和指南. 变量名只能包含字母.数字和下划线.变量名可以字母或者下划线打头,但不能以数

python入门学习:7.函数

python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数 ??使用关键字def告诉python要定义一个函数,紧接着跟着函数名,冒号.后面的缩进构成函数体.例如: 1def func_name():2    函数体34def greet_user():5    """显示简单问候语"""6    print("hel

Python入门学习指南--内附学习框架

Python入门学习指南 最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平台: 78486745 ,欢迎大家加入共同交流学习. 对于初学者,入门至关重要,这关系到初学者是从入门到精通还是从入门到放弃.以下是结合Python的学习经验,整理出的一条学习路径,主要有四个阶段 NO.1 新手入门阶段,学习基础知识 总体来讲,找一本靠谱的书,由浅入深,边看边练. 网上的学习教程有很多,多到不知道如何选择.所有教程在基础知识介绍方面都差不多,区别在于讲的是否足够细(例如运

Python入门学习:一步步教你怎么用Python写贪吃蛇游戏

前几天,有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)玩Snake(贪吃蛇),再合适不过了. 这里通过一个Python入门学习的例子跟大家详细讲解一下! 先通过下面这个效果图来感受下吧! 1 环境 操作系统:Windows Python版本:3.7.3 2 需求分析 我们先来回顾下贪吃蛇中的游戏元素及游戏规则. 首先呢,需要有贪吃蛇.有食物:需要能控制贪吃蛇来上下移动获取食物:贪吃蛇在吃取食物后,自身长度增加,同时食物消

python入门学习课程推荐

最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化的学习. 现推荐几个学习python基础知识的途径: 1.<笨办法学python>(第三版),从头到尾一个字一个字的照着程序敲: 2.慕课网<python入门>课程: 3.网易云课堂<疯狂的python>公开课. 4.<廖雪峰Python3>pdf文件. 这也是

python入门学习

最近闲来无事,搞搞py交易吧! 作为一个快速崛起的语言,python编程确实是好用的不得了,当然这不是说他就可以代替其他语言,这是目前所有语言都不可能做到的: python有他的优点: 简单,简洁,易懂,入门快: 学过python的应该都有体会,python比其他很多语言都要轻便的多,易于编写: 比如python的hello world: #!/usr/bin/python print('hello world') 就这一句就ok了: 简单的了解下python,下面我们来了解下python2和3

Python入门学习 DAY 01 计算机基础

Python入门 DAY 01 作为一名刚刚学习python的小白,我首先去学习的并不是python语言的基础知识,而是先对计算机的基础进行了一个初步的了解,以下内容便是在学习python之前我去学习到的大致内容. 1.什么是编程语言    语言是一个事物与另外一个事物沟通的介质    编程语言是程序员与计算机沟通的介质    2.什么是编程    编程就是程序按照某种编程语言的语法规范将自己想要让计算机做的事情表达出来    表达的结果就是程序,程序就是一系列的文件    3.为什么要编程  

[原创]Python入门学习之数据结构

Preamble: 在未学习python之前,使用c/c++已有5年之久.虽对python刚学习,但也领略到了python的强大之处,开拓了自己的视野和思维. 一 变量 python中的变量与c/c++中的变量不同.在c/c++中,变量的本质就是内存的地址,但在python中,当我们定义一个变量并赋值时,如下: a='ABC' python的解释器干了两件事情:(1)在内存中创建一个‘ABC’的字符串:(2)在内存中再创建一个名为a的变量,并把它指向‘ABC’.也就是说,对于python占用的内