图书馆借了本关于Hadoop和spark的书,于是在自己的Linux上鼓捣了两天。最后发现书中在虚拟机上并开了四个虚拟机的操作我的笨电脑实在无法实现并没有下文,其中耍了两下Pyspark(天真地在终端中用Pyspark成功运行后还以为能在python里import pyspark实现)和scala。不过装的过程对linux的各种命令又有了新的认识。
面向对象,类,方法这个极其基础的东西我在不同的书上也接触过很多次了,但这次这本《Python 设计模式》这本书讲的很清楚
,包括对象的封装,多态,接口等内容都初有涉猎(感觉老男孩的视频那两个本书看不下去)
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def get_person(self,):
return "<Person (%s, %s)" %(self.name,self.age)
p = Person("John",32)
print("Type of Object: ",type(p),"Memory Address:",id(p))
__init__前缀使其可访问性变成私有,可以简单地代替C++与Java语言中public,private,protected等关键字的使用
继承的话是对父类的定义进行独立拓展,且python可以给出多重继承(继承多个基类的方法)。
class A:
def ak(self):
print("ak+")
class B(A):
def b(self):
print("b-")
b1 = B()
print(b1.ak())
至于抽象,则是通过
接口使数据与类的对象进行交互,但同时外部输入不知道内部如何进行内部处理,以下面简单的高斯求和为例:
class Adder:
def __init__(self):
self.sum = 0
def add(self, other):
self.sum += other
acc = Adder()
for i in range (99):
acc.add(i)
print(acc.sum)
实际上用以往的函数代替其实现过程主要在于 self.sum这个单元能否访问和直接输出。
组合则是可以跨模块的实现基本功能的一种实现方法,合成为一种更复杂的数据结构或者软件的实现方法。
class A(object):
def a1(self):
print("a1")
class B(object):
def b(self):
print("b")
A().a1()
objectB = B()
objectB.b()
扫描二维码关注公众号,回复:
2835272 查看本文章