Python3 面向对象

10 阅读1分钟
## 类定义
class ClassName:
    <statement-1> . . . <statement-N>
类有一个名为 __init__() 的特殊方法(**构造方法**)

## 类对象.
类对象支持两种操作:属性引用和实例化
class MyClass: """一个简单的类实例"""
    i = 12345 
    def f(self):
        return 'hello world'
实例化类 x = MyClass()

## 类的方法
self 代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的**第一个参数名称**, 按照惯例它的名称是 self

## 多继承
class DerivedClassName(BaseClassName):
    <statement-1> . . . <statement-N>
    
## 方法重写
## 类属性与方法
### 类的私有属性
**__private_attrs**:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
在类内部的方法中使用时 **self.__private_attrs**。
### 类的方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,
且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定使用 self。
### 类的私有方法
**__private_method**:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,
不能在类的外部调用。**self.__private_methods**。

### 运算符重载
class Vector:
      def __init__(self, a, b):
            self.a = a
            self.b = b

      def __str__(self):
            return 'Vector (%d, %d)' % (self.a, self.b)

      def __add__(self,other):
            return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)