创建一个类
class Person: pass p = Person() print(p)
类以class 声明
self变量
- 这个定义与C++的this指针,都是指向对象示例本身,但使用起来是不一样的。
- 可以看到函数定义的时候,都要带一个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