Python初探之面向对象编程
概述很多人接触Python,都是从爬虫开始,其实很多语言都可以做爬虫,只是Python相对其他语言来说,更加简单而已。但是Python并不止于爬虫,在人工智能,科学计算等方面的应用更加广泛。古人云:万丈高楼平地起,要想有长足的发展,打好基础很重要,本文主要讲解Python的面向对象相关知识,仅供学习分享使用,如有不足之处,还请指正。 面向对象的特征
以上是面向对象的基本特征,那么Python在面向对象方面是如何做的呢? 创建类? 如下所示:
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 += 1 10 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__) 类的属性与方法
如下所示: JustCounter: 2 类描述3 __secretCount = 0 类的私有变量 4 publicCount = 0 公开变量 5 6 count(self): 7 self.__secretCount += 1 8 self.publicCount += 1 9 私有变量:__secretCount) Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName( 对象名._类名__私有属性名 )访问属性,如下所示: 1 print(counter._JustCounter__secretCount)
? 类的继承面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。
如下所示:Parent表示一个父类,拥有自己的属性和方法。 Parent: 定义父类 3 parentAttr = 100 6 调用父类的构造函数 7 8 parentMethod(self): 9 调用父类方法 setAttr(self,attr): 12 Parent.parentAttr = attr 13 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)) 判断是否是实例对象 判断是否是实例对象 ? 备注天净沙·秋思 枯藤老树昏鸦,小桥流水人家,古道西风瘦马。夕阳西下,断肠人在天涯。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |