栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python之面向对象编程(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python之面向对象编程(一)

文章目录
    • 一 什么是面向对象编程
        • 1. 面向过程的编程
        • 2. 面向对象编程
        • 3. 面向过程与面向对象的区别
    • 二 python中的类和对象
        • 1. 类
        • 2. 对象(实例)
        • 3. 对象和类的关系
    • 三 类的定义
    • 四 类的属性和方法
        • 1. 属性
        • 2. 属性的访问
        • 3. 类属性和对象属性
        • 4. 类方法
        • 5. _ _init_ _ 和self

一 什么是面向对象编程 1. 面向过程的编程

面向过程编程,即从业务的逻辑开头开始,从头到尾进行编程,或者说根据业务逻辑从上到下进行编程。

2. 面向对象编程

面向对象编程是一种编程思维,是一个抽象的概念。是把具有相同属性,行为等特征的一类事或物归为一类。如生活中的人,人具有说话,行走,思考等特征;车有轮子,方向盘,能移动等特征。上面的人和车我们把他们分别进行分类,因为他们各自具有不同的特征,而某一个人和某一辆车则是一个对象,他们分别属于不同的类。

3. 面向过程与面向对象的区别
  • 面向过程和面向对象编程是两种不同的编程思维
  • 面向过程重点在怎么做,注重做的步骤与过程,不注重职责分工
  • 面向对象重点在谁来做,注重职责分工
  • 当面向复杂的需求变化时,面向过程开发的代码没有固定的套路,开发难度大;而面向对象编程一般会有固定的编程套路或者模板,开发难度相对较小。
二 python中的类和对象 1. 类

上面说过,类是一些具有相同的特征,行为的事或物的统称,是一个抽象的概念。在编程中,特征,行为对应如下

  • 特征其实就是一个变量,在类中称为属性
  • 行为其实就是一个函数,在类中称为方法
  • 而类其实就是由属性和方法组成的一个抽象概念
2. 对象(实例)

对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。在开发中,应该先有类,在类里定义好属性和行为,再根据类来创建对象。

3. 对象和类的关系
  • 类是一个模板(统称),先有类,再有对象
  • 使用同一个类,可以创建多个对象
  • 类中定义了属性和方法,对象被创建后,具有类中相同的属性和方法
  • 不同的对象具有类中相同的属性和方法,但是不同对象所对应的输出值不同
三 类的定义

在python中,类的定义如下

class 类名:
	属性1
	属性2
	...
	方法1
	方法2
	...

例如创建一个Student,以及创建一个student1对象,student是类Student的一个对象,如下

#创建一个学生类
class Student:
    """打印学生的个人信息"""
    #定义name和age属性值
    name = "张三"
    age = 23
    #定义方法,打印个人信息
    def persion(self):
        print("学生信息:", self.name, self.age)

#创建一个对象
student1 = Student()
#student1调用方法(行为)persion,打印个人信息
student1.persion()

四 类的属性和方法 1. 属性

上面说过,类的特征其实就是类的属性,比如人有眼睛,手,脚等特征(属性);在编程中,属性就是一些变量,如下

#定义一个Persion类
class Persion:
    """一个简单的Persion类"""
    name = "张三" #Persion的name属性
    age = '24'   #Persion的age属性

    def persion_msg(self):
        print("我是" + self.name + ", 年龄" + self.age)

#创建类对象,并赋值给p1
p1 = Persion()
p1.persion_msg()

这其中,name和age就是类Persion的属性。

2. 属性的访问

类属性的访问有两种方式(句点法)

  • 方式一:类.属性名
  • 方式二:对象.属性名
#定义一个Persion类
class Persion:
    """一个简单的Persion类"""
    name = "张三" #Persion的name属性
    age = '24'   #Persion的age属性

    def persion_msg(self):
        print("我是" + self.name + ", 年龄" + self.age)

#创建类对象,并赋值给p1
p1 = Persion()

#类.属性名  访问类属性
print(Persion.name)
print(Persion.age)

#对象.属性名 访问类属性
print()

3. 类属性和对象属性

类中的属性分为类属性和对象属性(方法中的变量)。各自的特征如下

类属性

1. 类属性定义在类的内部,任何方法之外
    	1.1 创建类的时候直接创建
     	2.2 类名.新的属性名=属性值
2. 使用类属性
   	2.1 对象.类属性
   	2.2 类.类属性
3. 类属性的特点
   	3.1 类属性是属于类对象的,所有类对象共有
   	3.2 对象共用类属性。如果类属性变化,所有的对象也会改变
4. 类属性有且只有一个

对象属性

1.对象属性定义在方法内部
2. 创建
		2.1 对象.实例属性名=属性值
		2.2 方法内部创建:self.属性名 = 属性值
3. 使用对象属性
		对象.实例属性名
4. 对象属性各自拥有互相独立
5. 对象属性和类属性发生命名冲突
		1. 以对象属性名优先
		2. 对象属性名会覆盖该同名的类属性
4. 类方法

其实类中的方法就是各种函数,它与普通函数的区别在于多了一个self参数,它的定义和调用如下

类方法的定义

def (self, 参数1, 参数2, ...)
 def persion_msg(self):
        print("我是" + self.name + ", 年龄" + self.age)

类方法的调用

#类方法的调用
方式一:类名().方法名()
方式二:对象.方法名()
#定义一个Persion类
class Persion:
    """一个简单的Persion类"""
    name = "张三" #Persion的name属性
    age = '24'   #Persion的age属性

    def persion_msg(self):
        print("我是" + self.name + ", 年龄" + self.age)

#创建类对象,并赋值给p1
p1 = Persion()

#类方法调用
Persion().persion_msg()
p1.persion_msg()
5. _ init _ 和self
  • _ init _ (): 该函数的作用是初始化对象(实例)。就是每当创建一个对象时,class类就会自动调用 _init _() 函数来初始化对象,并赋于一些初始值(如果有的话)。就如公司每新来一个员工,人事部门就会首先对他进行信息登记,然后给予工位工牌等,这其中人事登记就相当于初始化对象,而给予工位工牌就相当于赋于一些初始值。 如下
#定义一个Persion类
class Persion:
    """一个简单的Persion类"""
    def __init__(self, name, age):
        #__init__()初始化对象
        self.name = name #Persion的name属性
        self.age = age   #Persion的age属性

    def persion_msg(self):
        print("我是" + self.name + ", 年龄" + self.age)

#创建类对象,并赋值给p1
p1 = Persion("张三", '24')

#类方法调用
p1.persion_msg()


其中,init()就是初始化对象,而self.name = name,self.age = age则是初始化对象的属性。该函数的特点如下

def __init__():  
1.这个方法不需要被调用,只要创建对象就会自动执行
2.这个方法只能返回None值,无法返回其他类型的值
3.如果要给init传递多个参数,只能通过 类名(多个参数) 的方式去传递
4.如果类里面没有定义init,默认去调用父类
5.如果类里面重复定义了多个init方法,会被最后一个init方法覆盖
  • self:当对象被创建完后就赋值给了self参数,所以self参数就是对象本身。但self不是python的关键字,也可以用其他字符代替,不过一般默认用self,因为大家都用self!,如下
#定义一个Persion类
class Persion:
    """一个简单的Persion类"""
    def __init__(self, name, age):
        #__init__()初始化对象
        self.name = name #Persion的name属性
        self.age = age   #Persion的age属性
        
    def fun1(self):
        print(self)
        print(id(self))
        
    def persion_msg(self):
        print("我是" + self.name + ", 年龄" + self.age)

#创建类对象,并赋值给p1
p1 = Persion("张三", '24')

#类方法调用
p1.fun1()
print(type(p1))
print(id(p1))


从结果可以看出,对象p1的地址和初始化后的self的地址是一样的,所以,在类里self代表的就是对象本身。 self的特点如下

1. self在类里面代表的就是对象本身
2. self必须传递,且是默认传递,不需要我们去传递
3. self不是python的关键字,可以用其他字符替代
4. 哪个对象调用了方法,方法里的self指的就是谁
5. 
   通过 self.属性名 可以访问到这个对象的属性。
   通过 self.方法名() 可以调用这个对象的方法。

参考文章:
https://blog.csdn.net/zhiguigu/article/details/120214801
https://blog.csdn.net/mall_lucy/article/details/106756318

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/283268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号