python的面向对象

python的面向对象

一.python的面向对象的重要术语

 1、多态(polymorphism):一个函数有多种表现形式,调用一个方法有多种形式,但是表现出的方法是不一样的。 2、继承(inheritance)子项继承父项的某些功能,在程序中表现某种联系 3、封装(encapsulation)把需要重用的函数或者功能封装,方便其他程序直接调用 4、类:对具有相同数据或者方法的一组对象的集合 5、对象:对象是一个类的具体事例 6、实例化:是一个对象事例话的实现 7、标识:每个对象的事例都需要一个可以唯一标识这个事例的标记 8、实例属性:一个对象就是一组属性的集合 9、事例方法:所有存取或者更新对象某个实例一条或者多条属性函数的集合。 10、类属性:属于一个类中所有对象的属性, 11、类方法:那些无须特定的对性实例就能够工作的从属于类的函数。

二、封装、继承、多态

  一.封装

  1.概念

  公开属性:可以在类以外的任何地方直接访问。

  私有属性:只能在类的内部被直接访问,在对象属性的前面添加两个下划线表示是私有属性。

  2.属性未被私有化

 1 class Person(): 2     def __init__(self, name, age): 3         # 公开属性 4         self.name = name 5         self.age = age 6  7  8 p1 = Person("jack", 10) 9 # 直接访问10 print(p1.name, p1.age)  # jack 1011 12 # 修改13 p1.name = "tom"14 p1.age = 1915 print(p1.name, p1.age)  # tom 19

  3.属性被私有化

  工作原理:一个属性一旦被私有化,在底层形成了 _类名__属性名 的属性名 ,但是不建议使用。私有化属性在底层的存在形式根据操作系统或者Python解释器的不同会有所差别,如果直接使用此种方式访问,违背了Python跨平台的特点。

 1 class Person(object): 2     def __init__(self, name, age): 3         self.__name = name 4         self.__age = age 5  6  7 p = Person("jack", 10) 8 print(p.name,p.age) #AttributeError: 'Person2' object has no attribute 'name' 9 print(p.__name) #AttributeError: 'Person2' object has no attribute '__name'10 print(p._Person__name)  # jack

  4. 暴露给外界访问的函数

   在类外面访问属性,无非涉及到两个操作:获取值,修改值。

 1 class Person(object): 2     def __init__(self, name, age): 3         self.__name = name 4         self.__age = age 5  6     # 返回被私有化属性的值 7     def getname(self): 8         return self.__name 9 10     def setname(self, name):11         self.__name = name12 13     def getage(self):14         return self.__age15 16     def setage(self, age):17         if age < 0:18             age = abs(age)19         self.__age = age20 21 22 p = Person("jack", 10)23 # 获取值24 r1 = p.getname()25 print(r1)  # jack26 # 修改值27 p.setname("tom")28 r2 = p.getname()29 print(r2)  # tom30 31 p.setage(-19)32 print(p.getage())  # 19

  二.继承

  

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部