Python类

创建一个类

class Person:
    pass

p = Person()
print(p)

类以class 声明

self变量

  1. 这个定义与C++的this指针,都是指向对象示例本身,但使用起来是不一样的。
  2. 可以看到函数定义的时候,都要带一个self参数。这是因为python解释器会默认将对象本身作为参数传入函数。比如 ```python class test: def fun(self):
     pass

p = test() p.fun()

这里p.fun()实际上会被解释成test.fun(p)。所以若是fun没有带self参数,就会被认为传入一个参数到不带参数的函数,从而报错。
3. 名字不一定是self,这只是一种约定俗成的方式

## 实例化对象
与调用函数类似

## 使用对象方法
```python
class Line:
    def WhoAmI(self):
        print("I am a line class")


p = Line()
p.WhoAmI()

方法与C++类似,不同的是,这里的类的成员函数有一个self参数

init方法

类似于C++的构造函数,在类被实例化的时候调用。

class Line:
    x = 0
    y = 0

    def __init__(self,x ,y):
        self.x = x
        self.y = y

    def showXY(self):
        print("x = %d , y = %d " %(self.x,self.y))


    def whoAmI(self):
        print("I am a line class")


p = Line(1,2)
p.whoAmI()
p.showXY()

私有成员

以双下划线开始命名的成员变量和成员函数为私有的。

class Line:
    x = 0
    y = 0

    __const  = 10

    def __init__(self,x ,y):
        self.x = x
        self.y = y

    def showXY(self):
        print("x = %d , y = %d " %(self.x,self.y))


    def whoAmI(self):
        print("I am a line class")


p = Line(1,2)
p.whoAmI()
p.showXY()
print(p.x)
print(p.y)
print(p.__const)

这里执行到最后一句时会显示找不到该属性(AttributeError: 'Line' object has no attribute '__const')

重载、继承

TODO

原文地址:https://www.cnblogs.com/WeyneChen/p/6670628.html