类正则表达

Python面向对象的三大特征:封装 、 继承 、 多态

一.封装

1.含义
封装是对全局作用域中其它区域隐藏多余信息的原则。
2.实例
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。
代码如下:

1 class Student(object):
2 
3     def __init__(self, name, score):
4         self.__name = name
5         self.__score = score
6 
7     def print_score(self):
8         print('%s: %s' % (self.__name, self.__score))

二.继承
什么是继承
我们不想把同一段代码写好几次,之前使用的函数避免了这种情况。但现在又有个更微妙的问题。如果已经有了一个类,又想建立一个非常类似的类,只是添加几个方法。
比如有人类,我们又想在人类的基础上建立学生类、医生类,教师类。因为他们都具有共同的属性和方法,比如都有 姓名 、年龄 、性别 等共同属性,还有吃饭、睡觉等共同方法。我们就可以写一个人类作为父类,包括姓名、年龄、性别等属性和吃饭睡觉等方法。然后再写多个子类继承父类的这些属性和方法。
但需要注意的是,父类的私有属性和方法不会被子类继承

三.多态

当子类和父类都存在相同的方法时,我们说,子类的方法覆盖了父类的方法,在代码运行的时候,总是会调用子类的方法。这样,我们就获得了继承的另一个好处:多态。

单下划线、双下划线、头尾双下划线说明:

__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

四、三维向量类

 1 class vector3:
 2  
 3  def __init__(self, x_ = 0, y_ = 0, z_ = 0): #构造函数
 4  
 5   self.x = x_
 6  
 7   self.y = y_
 8  
 9   self.z = z_
10  
11  def __add__(self, obj):
12  
13   return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z)
14  
15  def __sub__(self, obj):
16   return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z)
17  
18  def __mul__(self, obj):
19  
20   return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z)
21  
22  def __pow__(self, obj):
23  
24   return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y)
25  
26  def __str__(self):
27  
28   return str(self.x)+','+str(self.y)+','+str(self.z)
29  
30 v1 = vector3(1, 2, 3)
31  
32 v2 = vector3(0, 1, 2)
33  
34 print (v1 + v2)
35 print (v1 - v2)
36 print (v1 * v2)
37 print (v1 ** v2)

猜你喜欢

转载自www.cnblogs.com/slj-xt/p/13186218.html