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

python基础(12):类和两大编程思想:面向过程&面向对象(附有代码)

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

python基础(12):类和两大编程思想:面向过程&面向对象(附有代码)

        写在前面,大家好!我是Xlong,一个非计算机科班的工科男。由于最近在学习python,并记了很多关于python学习的笔记,就想整理一个有关其基础的系列文章,一方面便于自己日常复习,另一方面也想在这个平台上与众多小伙伴一起交流学习,期待通过这次的整理可以让自己对python有一个较为清晰的理解和认识。如有不足或错误的地方欢迎在评论区或者私信我指正。感谢大家的不吝赐教,非常感谢大家的支持。
        用知识成就未来。让我们一起加油 (ง •̀o•́)ง (ง •̀o•́)ง(ง •̀o•́)ง

本篇简介

        在上一章《python基础(11):Bug和异常处理机制》中我们详细介绍了关于Bug的种类以及异常处理机制的种种。这一篇文章我们主要来学习python中类的概念以及两大编程思想:面向过程和面向对象。

目录

本篇简介

一、两大编程思想

二、类和对象的创建

2.1 类

2.2 数据类型

2.3 对象

2.4 类的组成

三、类对象与类属性、类方法、静态方法

3.1 类属性

3.2 类方法

3.3 静态方法

3.4 动态绑定属性和方法


一、两大编程思想

 详细内容请移步博文《【计算机基础知识】三大编程思想》

二、类和对象的创建

2.1 类

        类别,分门别类,物以类聚,人类,鸟类,植物类

2.2 数据类型

(1)不同的数据类型属于不同的类

(2)使用内置函数查看数据类型

2.3 对象

        100、99、520都是int类之下包含的相似的不同个例,这个个例专业术语称为实例或对象,python中一切皆对象

class Student: #Student为类名(由一个或多个单词组成,每个单词的首字母大写,其余的小写)
    pass
#python中一切皆对象,Student是对象吗?内存有空间吗?
print(id(Student)) #2115894098800
print(type(Student)) #
print(Student) #

2.4 类的组成

        类属性、实例方法、静态方法、类方法

class Student: #Student为类名(由一个或多个单词组成,每个单词的首字母大写,其余的小写)
    native_place = '吉林'  #直接写在类里的变量称为类属性
    def __init__(self,name,age):
        self.name = name #self,name称为实体属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性
        self.age = age
    #实例方法
    def eat(self):
        print('学生在吃饭。。。')
    #静态方法
    @staticmethod
    def method():
        print('我使用了staticmethod进行修饰,所以我是静态方法')
    #类方法
    @classmethod
    def cm(cls):
        print('我是类方法,因为我使用了classmethod进行修饰')
#在类之外定义的称为函数,在类之内定义的称为方法
def drink():
    print('喝水')

#创建Student类的对象
stu1 = Student('张三',20)
stu1.eat() #对象名.方法名
print(stu1.name)
print(stu1.age)

print('-----------------------')
Student.eat(stu1)   #35行与30行代码功能相同,都是调用Student中的eat方法
                    #类名.方法名(类的对象)-->实际上就是方法定义处的self

三、类对象与类属性、类方法、静态方法

3.1 类属性

        类中方法外的变量称为类属性,被该类的所有对象所共享

3.2 类方法

        使用@classmethod修饰的方法,使用类名直接访问的方法

3.3 静态方法

        使用@staticmethod修饰的方法,使用类名直接访问的方法

class Student: #Student为类名(由一个或多个单词组成,每个单词的首字母大写,其余的小写)
    native_place = '吉林'  #直接写在类里的变量称为类属性
    def __init__(self,name,age):
        self.name = name #self,name称为实体属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性
        self.age = age
    #实例方法
    def eat(self):
        print('学生在吃饭。。。')
    #静态方法
    @staticmethod
    def method():
        print('我使用了staticmethod进行修饰,所以我是静态方法')
    #类方法
    @classmethod
    def cm(cls):
        print('我是类方法,因为我使用了classmethod进行修饰')

#类属性的使用方式
print(Student.native_place)
stu1 = Student('张三',20)
stu2 = Student('李四',30)
print(stu1.native_place)
print(stu2.native_place)
Student.native_place = '天津'
print(stu1.native_place)
print(stu2.native_place)
print('--------类方法的使用方式----------')
Student.cm()
print('--------静态方法的使用方式----------')
Student.method()

3.4 动态绑定属性和方法

(1)Python是动态语言,在创建对象之后,可以动态地绑定属性和方法

class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def eat(self):
        print(self.name+'在吃饭')

stu1 = Student('张三',20)
stu2 = Student('李四',30)
print(id(stu1))
print(id(stu2))
print('--------为stu1去动态的绑定性别属性------------')
stu1.gender = '女' #创建对象之后单独为stu1绑定了性别属性,而没有为stu2绑定性别属性
print(stu1.name,stu1.age,stu1.gender)
print(stu2.name,stu2.age)

print('----------------------------------')
stu1.eat()
stu2.eat()

def show():
    print('定义在类之外的,称函数')
stu1.show = show
stu1.show()
#stu2.show() #因为stu2没有绑定show方法

 持续更新中......

原创不易,各位看官请随手点个赞和关注哦,感谢!!!

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

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

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