Python 数据挖掘分析 - 函数面向对象

函数

1
2
3
def func(arg1, ..., argN=1):
expression
return None

return 是 return None 的简写, 函数可以没有 return 语句.
空函数体要使用 pass

超过一个返回值, 使用 tuple 实现: return x,y,z

传参可以直接按顺序传, 也可以 func(argN=1, ..., arg1=n)

不可变对象传参值传递, 可变对象传参引用传递

可选参数:

  1. 参数打包后以[]/()/{}传参.
  2. *tpl 表示 tuple, **dct 表示 dict.

匿名函数:
lambda arg1…: expression

作用域: 模块内函数外, 则全局可访问(函数内访问是只读, 加 global 变可写); 函数内, 函数局部可访问.

面向对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class ClassName(baseObject 默认 object):
"""
一般的类注释
"""

def __init__(self, id, price):
"""
初始化方法, 必须传入股票的 id 和价格
"""
# public
self.id = id
# private
self.__price = price

def debug(self):
print("%s price is %s" %(self.id, self.__price))

def getPrice(self):
return(self.__price)

obj1 = ClassName(1, 12.5)
obj2 = ClassName(2, 8.0)

obj1.debug()

继承的初始化和覆盖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 继承
class Parent(object):
def __init__(self, argv1):
self.argv1 = argv1

def foo(self):
pass


class Child(Parent):
def __init__(self, argv1, argv2):
Parent.__init__(self, argv1)
# 或者
super(Child, self).__init__(argv1)

self.argv2 = argv2

def foo(self):
super(Child, self).foo()

属性可以动态产生, 所以同一个类产生的对象, 不一定有相同的属性,
但是必要的属性, 可以使用 __init__ 方法添加, 必须在创建对象时传入.

封装: 增加 private 概念, 使得有些内容只能内部访问, 要增加部分方法予以暴露.
继承: 增加复用性, 抽象性(父类是多个子类的共性), 子类覆盖父类的方法称重写.

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.