类,是一个定义;实例是真正的对象的实现,创建一个实例的过程称作实例化。
所有的类都继承自一个叫做 object 的类。继承的定义之后再说。
类的一些操作方式和函数很像,在没有面向对象编程方式的时候,就是面向过程(函数)的开发方式。
类可以很复杂,也可以很简单,取决于应用的需要。面向对象的编程方式,是现代流行的开发方式,博大精深,需要慢慢理解体会。一开始有些不太清楚,也没有关系。
类可以理解为一种称之为命名空间( namespace),在这个类之下,数据都是属于这个类的实例的,我们称为属性,用实例名字+点+属性名字。这样的类比较简单,在 c 语言中称为结构体,在 pascal 中为记录类型,python 的数据结构比较简单。
In [3]:
# 申明一个 class MyData
class MyData(object):
pass
# 实例化 MyData, 实例的名字叫做 obj_math
obj_math = MyData()
obj_math.x = 4
print(obj_math.x)
In [6]:
class MyData(object):
# 定义一个 SayHello 的方法,self 可以理解为必须传递的参数
def SayHello(self):
print('Hello!')
# 实例化
obj_math = MyData()
# 调用方法
obj_math.SayHello()
In [9]:
# 类直接调用没有意义,报错
MyData.SayHello()
In [5]:
# 在上面基础上,复杂一点的例子
class MyData(object):
# 初始化方法,双下划线前后
# 实例化的时候,需要传递 self 之后的参数
def __init__(self, x, y):
self.x = x
self.y = y
# 定义一个 SayHello 的方法,self 可以理解为必须传递的参数
def SayHello(self):
print('Hello!')
def Add(self):
print(self.x + self.y)
# 实例化
obj_math = MyData(3,4)
# 调用方法
obj_math.SayHello()
obj_math.x = 5
obj_math.Add()
o1 = MyData(1,3)
o1.Add()
In [15]:
# 再复杂一点,创建多个实例
class MyData(object):
# 初始化方法,双下划线前后
# 实例化的时候,需要传递 self 之后的参数
def __init__(self, x, y):
self.x = x
self.y = y
# 定义一个 SayHello 的方法,self 可以理解为必须传递的参数
def SayHello(self):
print('Hello!')
def Add(self):
print(self.x + self.y)
# 实例化
obj_math = MyData(3,4)
# 调用方法
obj_math.SayHello()
obj_math.Add()
# 再创建一个实例
obj_math2 = MyData(5,6)
obj_math2.Add()
思考一下
启动一个最简单的服务器 python3 -m http.server
然后在浏览器中 127.0.0.1:8000 来进行访问这个服务器了
In [17]:
# 输入 n, 如果 n 等于 1 或者 等于 2 或者 等于 3, 显示 small,其他显示 big
n = int(input('Please input:'))
if n in [1,2,3]:
print('small')
else:
print('big')
In [18]:
def multiply(x):
return (x*x)
def add(x):
return (x+x)
funcs = [multiply, add]
for i in range(5):
value = list(map(lambda x: x(i), funcs))
print(value)
In [ ]: