Python初探之面向对象编程

Python初探之面向对象编程,第1张

概述很多人接触Python,都是从爬虫开始,其实很多语言都可以做爬虫,只是Python相对其他语言来说,更加简单而已。但是Python并不止于爬虫,在人工智能,科学计算等方面的应用更加广泛。古人云:万丈高 概述

很多人接触Python,都是从爬虫开始,其实很多语言都可以做爬虫,只是Python相对其他语言来说,更加简单而已。但是Python并不止于爬虫,在人工智能,科学计算等方面的应用更加广泛。古人云:万丈高楼平地起,要想有长足的发展,打好基础很重要,本文主要讲解Python的面向对象相关知识,仅供学习分享使用,如有不足之处,还请指正。

面向对象的特征类:用来描述相同事物的特征的集合,如:Person 类,表示人,具有人的属性和特征。对象:通过类定义的具体的实例,如:zhangsan 表示一个具体的人。继承:是指派生类继承基类的方法和属性,并具有自己属性和特征,如:Man是Person的子类。封装:隐藏数据和实现细节,提供对外访问方法。多态:一个基类,可以有多个派生类,可以有不同的形态。抽象:抛开细节,只关注本质特征的过程。

以上是面向对象的基本特征,那么Python在面向对象方面是如何做的呢?

创建类

 

如下所示:

使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾。Python的类,没有大括号表示类的内容范围,而是通过缩进来实现。类的成员方法和普通方法的区别是,方法定义的第一个参数是self,表示类的实例,但在调用时不需要。其中__init__方法为类的初始化方法,当声明对象时,会调用对应的方法。其中__del__方法为析构函数,当类被释放时调用。
 1 class Employee: 2     """员工类""" 3     emp_count = 0  # 变量是一个类变量,它的值将在这个类的所有实例之间共享 4  5     def __init__(self,name,salary): 6         初始化 7         self.name = name 8         self.salary = salary 9         Employee.emp_count += 110 11     def display_count(self):12         显示数量13         print('Total Employee =',Employee.emp_count)14 15      display_employee(self):16         显示信息17         name =',self.name,18 19      prt(self):20         打印自己21         print(self)22         print(self.__class__)23 24     __del__(self):25         析构函数26         print(self,1)">被释放了')
创建对象

Python创建对象,不需要new关键字,类似于函数的调用,和Java及.Net不同。如下所示:

1 创建第一个对象'2 emp = Employee(Jack3 emp.display_count()4 emp.display_employee()5 emp.prt()
动态添加与删除对象属性

对象的属性可以动态添加,这点与编译型语言不同,如下所示:

1 emp.age = 17   添加一个 'age' 属性2 emp.age = 28   修改 'age' 属性del emp.age   删除 'age' 属性

也可以通过Python的内置方法来添加和获取属性,如下所示:

1 print(getattr(emp,1)">name'))   获取属性2 print(hasattr(emp,1)">age 是否包含属性3 setattr(emp,18)   设置属性和值5 6 delattr(emp,1)">')   删除属性7  是否包含属性

Python也有内置类的一些属性,如下所示:

 内置对象"Employee.__doc__:",Employee.__doc__Employee.__name__:__name__Employee.__module__:__module__Employee.__bases__:__bases__6 Employee.__dict__:__dict__)
类的属性与方法类的私有属性,以双下划线开头,只可以在类内部通过self进行访问。 类的protected属性,以下划线开头,只允许子类和自身调用。在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数类的私有方法:以两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods

如下所示:

 JustCounter:2     类描述3     __secretCount = 0   类的私有变量4     publicCount = 0   公开变量5 6      count(self):7         self.__secretCount += 18         self.publicCount += 19         私有变量:__secretCount)

Python不允许实例化的类访问私有数据,但你可以使用 object._classname__attrname( 对象名._类名__私有属性名 )访问属性,如下所示:

1 print(counter._JustCounter__secretCount)

 

类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。

Python中的继承通过 class 子类名(父类名): 的格式实现。子类可以调用父类的方法和定义自己的方法。如果父类方法的功能不能满足需求,子类可以重写(overrIDes)父类的方法。

如下所示:Parent表示一个父类,拥有自己的属性和方法。

 Parent:定义父类 3     parentAttr = 100 6         调用父类的构造函数 7  8      parentMethod(self): 9         调用父类方法 setAttr(self,attr):12         Parent.parentAttr = attr13 14      getAttr(self):15         父类属性:16 17      myMethod(self):18         我是父类的MyMethod')

Child表示一个子类,继承自Parent,如下所示:

 Child(Parent):定义子类 3  4      5         调用子类的构造方法 6  7      childMethod(self): 8         调用子类方法 9 10     11         重写OverrIDes父类方法12         我是子类的MyMethod__str__15         重写方法,适合人阅读16         return str方法返回'
子类的实例化

如下所示:

1 c = Child()   实例化子类对象2 c.childMethod()   调用子类方法3 c.parentMethod()   调用父类方法4 c.setAttr(200)   再次调用父类方法,设置属性5 c.getAttr()   再次调用父类方法 获取属性6 c.myMethod()   调用的是子类的MyMethod

 

可以通过内置函数,判断子类与类的关系,如下所示:

print(issubclass(Child,Parent))   判断是否是对应的父子关系print(isinstance(c,Child))   判断是否是实例对象 判断是否是实例对象

 

备注

天净沙·秋思

作者:马致远

枯藤老树昏鸦,小桥流水人家,古道西风瘦马。夕阳西下,断肠人在天涯。 总结

以上是内存溢出为你收集整理的Python初探之面向对象编程全部内容,希望文章能够帮你解决Python初探之面向对象编程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存