面向对象编程:Python编程中类的使用

“介绍Python中面向对象编程的方法,包括类的定义、使用、继承、实例化和导入方法等。”

01 面向对象编程

所谓面向对象编程,指的是把现实世界中的事物或者情景抽象成具有相同行为的对象,给这些对象设置一些属性和行为模式,然后去调用对象的某些属性和行为。

除了面向对象编程,还有一种是面向过程编程。面向过程编程是把事物按照顺序分成不同的步骤,对每个步骤进行编程。举个简单的例子,把大象放冰箱需要几步?按照面向过程编程,需要三步,把冰箱门打开,把大象塞进去,把冰箱门关上。按照面向对象编程,则需要定义冰箱的属性和行为,冰箱可以被打开,也可以被关上。还需要定义人的属性和行为,人可以移动某个东西。定义好之后我们调用人和冰箱的行为就可以把大象塞进冰箱。

从这个例子可以看出来,面向过程编程一般具有更高的效率,而面向对象编程则具有更好的复用性、拓展性和可维护性。常用的编程语言中,C语言采用面向过程编程方法,而Java、Python等则以面向对象编程为特色。

02 类的创建

在Python中,类的创建通过class来进行,如:

# -*- coding:utf-8 -*-
class Dog():
  """ 一次模拟小狗的简单尝试"""
  
  def __init__(self,name,age):
    """初始化属性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!")

上面的代码定义了一个名为Dog的类,同时在类中定义了3个方法,用来模拟Dog类的属性和行为。第一个方法是默认的,用来表示类的属性,名称是__init__(self,*),其中*号表示形参,即你需要外部输入的变量。第二个和第三个方法分别用来模拟Dog类的“蹲下”和“打滚”行为,每个方法的括号开头都是self,用来传递实例自身。如果方法需要输入外部变量的话,可以在self后增加形参。

03 类的使用

在使用类的时候,我们首先将其实例化,然后就可以使用类及类中的方法了。如:

# -*- coding:utf-8 -*-
class Dog():
  """ 一次模拟小狗的简单尝试"""
  
  def __init__(self,name,age):
    """初始化属性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!")
    
my_dog = Dog("皮皮",3)
my_dog.sit()
my_dog.roll_over()

在上面代码中,第18行创建了Dog类的一个实例,名为my_dog。“皮皮”和3对应着Dog类的属性name和age。当创建完实例后,这个实例通过形参self传递到方法sit和roll_over中,因此这个实例可以使用这两个方法。如19行和20行的my_dog.sit()和my_dog.roll_over()。注意方法最后需要加括号哈。输出结果如下:

皮皮 is now sitting.
皮皮 rolled over!

04 类的继承和实例化

当你创建完一个类之后,想把这个类的属性和方法传递给另外一个类,该怎么做呢?这涉及到类的继承。类的继承方法如下所示:

# -*- coding:utf-8 -*-
class Dog():
  """ 一次模拟小狗的简单尝试"""
  
  def __init__(self,name,age):
    """初始化属性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!")
    
    
class ErHa(Dog):
  """创建二哈的类,继承Dog的属性和方法"""
  
  def __init__(self,name,age):
    """继承Dog的属性"""
    super().__init__(name,age)

my_dog = ErHa("肥肥",3)
my_dog.sit()
my_dog.roll_over()

输出结果如下所示:

肥肥 is now sitting.
肥肥 rolled over!

也可以为子类增加属性和方法:

# -*- coding:utf-8 -*-
class Dog():
  """ 一次模拟小狗的简单尝试"""
  
  def __init__(self,name,age):
    """初始化属性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!")
    
    
class ErHa(Dog):
  """创建二哈的类,继承Dog的属性和方法"""
  
  def __init__(self,name,age):
    """继承Dog的属性"""
    super().__init__(name,age)
    self.feature = '精力充沛'
    
  def character(self):
    """打印二哈的特点"""
    print("二哈的特点是"+self.feature)
  
my_dog = ErHa("肥肥",3,'精力充沛')
my_dog.sit()
my_dog.roll_over()
my_dog.character()

输出结果是:

肥肥 is now sitting.
肥肥 rolled over!
二哈的特点是精力充沛

在第25行,设置了二哈类的默认属性,也可以按照一般的方法设置属性:

  def __init__(self,name,age,feature):
    """继承Dog的属性"""
    super().__init__(name,age)
    self.feature = feature

除了继承之外,还有另一种传递类的方法的形式,称为实例化。如下所示:

# -*- coding:utf-8 -*-
class Dog():
  """ 一次模拟小狗的简单尝试"""
  
  def __init__(self,name,age):
    """初始化属性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!")
  
    
class BigDog():
  """创建大狗的类"""
  
  def __init__(self):
    """创建大狗的属性"""
    self.size = '大'
    
  def dog_size(self):
    """打印大狗的体型"""
    print('这种狗的体型很'+self.size)
    
    
class ErHa(Dog):
  """创建二哈的类,继承Dog的属性和方法"""
  
  def __init__(self,name,age,feature):
    """继承Dog的属性"""
    super().__init__(name,age)
    self.feature = feature
    self.size = BigDog()
    
  def character(self):
    """打印二哈的特点"""
    print("二哈的特点是"+self.feature)
     
my_dog = ErHa("肥肥",3,'精力充沛')
my_dog.sit()
my_dog.roll_over()
my_dog.character()
my_dog.size.dog_size()

我们首先创建了一个名为BigDog的类,然后把它作为实例,传递到ErHa类当中去。对应的代码是第38行。输出结果如下所示:

肥肥 is now sitting.
肥肥 rolled over!
二哈的特点是精力充沛
这种狗的体型很大

05 类的导入

当我们在某个Python文件里面定义好了类之后,如果在新的Python文件里面需要用到这些类,那么我们可以去导入这些类。常用的导入方法有:

from  A import B
from  A import B,C,D
import  A
from  A import *

上面代码中,A代表Python文件,B代表类。

第一种是从文件A中导入类B;

第二种是从文件A中导入类B、类C和类D;

第三种是导入文件A的所有类,需要按照A.B、A.C的格式去使用A的类;

第四种是导入文件A的所有类,按正常方法使用类即可,不需要带前缀。

不太建议使用第四种方法,因为首先其他方式可以很明显的知道导入了哪些类,另外其他方法不容易由于类的同名而引发错误。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值