博客
关于我
面向对象编程 && Python3
阅读量:552 次
发布时间:2019-03-08

本文共 2782 字,大约阅读时间需要 9 分钟。

面向对象编程与Python3入门指南

在世界各地的开发者群体中,Python3的面向对象编程一直是最受欢迎的学习方向之一。与Java的面向对象编程相比,Python的实现方式有其独特之处。本文将深入探讨Python3面向对象编程的核心概念,帮助开发者更好地理解其特性与优势。

类的构造

类是面向对象编程的核心构造单位。在Python中,类的定义采用class关键字。类中可以定义成员变量和成员方法,这使得类能够模拟现实生活中的对象。

成员变量的定义与访问

class Animal(object):    def __init__(self, name, age):        """成员变量定义"""        self.__animal_name = name        self.animal_age = age

通过上述代码,我们可以创建出一个具有私有属性的Animal类对象。在Python中,不需要显式声明数据类型,可以直接在运行时为对象外部添加属性。

animal = Animal("Tom", 5)animal.address = "北京"print("动物的住址在:%s, animal的名字叫做:%s, age为:%d" % (animal.address, animal.__animal_name, animal.animal_age))

方法的定义与调用

类方法的定义与调用类似于成员变量。以下是一个简单的to_string方法示例:

class Animal(object):    def __init__(self, name, age):        """成员变量定义"""        self.__animal_name = name        self.animal_age = age    def to_string(self):        """成员方法定义"""        print("动物的名字叫做:%s, 动物的年龄为:%d" % (self.__animal_name, self.animal_age))
animal = Animal("Tom", 5)print(animal.to_string())

运行结果将显示:

动物的名字叫做:Tom, 动物的年龄为:5

权限修饰符

Python提供了丰富的权限修饰符机制,类似于Java中的访问控制。在Python中,双重下划线__用于定义私有属性和方法。

私有属性的定义

class Animal(object):    def __init__(self, name, age):        self.__animal_name = name        self.animal_age = age    def __to_private_string__(self):        print("我是私有的方法!动物的名字叫做:%s, 动物的年龄为:%d" % (self.__animal_name, self.animal_age))

私有方法的调用

animal = Animal("John", 3)print("私有变量--动物名称:%s" % animal._Animal__animal_name)animal._Animal__to_private_string()

运行结果将显示:

私有变量--动物名称:John我是私有的方法!动物的名字叫做:John, 动物的年龄为:3

类变量与静态方法

Python中的类变量与静态方法与Java的概念有所不同。类变量在Python中与实例变量一同使用,类方法可以通过@classmethod装饰器实现。

类变量的定义

class Animal(object):    count_num = 0    def __init__(self, name, age):        self.animal_name = name        self.animal_age = age        Animal.count_num += 1
cat = Animal("Tom", 5)dog = Animal("John", 3)print(cat.count_num, dog.count_num)

运行结果将显示:

2 2

类方法的实现

class Animal(object):    count_num = 0    @classmethod    def count(cls):        print("创建对象次数:%d" % cls.count_num)
dog = Animal("John", 3)print(dog.count())

运行结果:

创建对象次数:1

继承与多态

与Java的面向对象编程相比,Python支持多继承,继承关系中的方法解析顺序遵循MRO(Most Specific Last Override原则)。

多态与重写

class Animal(object):    def run(self):        print("奔跑!")class Vehicle(object):    def run(self):        print("行驶!")class Car(Vehicle, Animal):    def run(self):        print("汽车正在行驶!")car = Car()car.run()

运行结果:

汽车正在行驶!

类继承与方法重写

class Mankind(Animal):    def eat(self):        print("人类吃熟食!")mankind = Mankind("李明", 18)mankind.sleep()mankind.run()

运行结果:

动物睡觉!人类吃熟食!奔跑!

分隔线

你可以通过if __name__ == "__main__":语句来包裹代码块,让其在作为主模块运行时执行,而在导入时不执行,避免代码在第一次导入时执行开销。

if __name__ == "__main__":    print("被`if __name__ == "__main__":`语句包括的部分。")    print("主模块下执行,但是作为导入模块时候是不执行的。")

结论

通过以上内容,可以看出Python的面向对象编程与Java有诸多相似之处,同时也有独特之处。With Python3的引入,为开发者提供了更加灵活和高效的开发环境。通过掌握这些核心概念,你将能够更好地编写和优化面向对象的Python程序。

转载地址:http://zrwiz.baihongyu.com/

你可能感兴趣的文章
nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
nginx配置全解
查看>>
Nginx配置参数中文说明
查看>>
nginx配置域名和ip同时访问、开放多端口
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>