标签:北京大学 logs class 结束 nbsp 清华大学 访问 定义类 数据
将一类具体事物的数据和动作整合到一起即面向对象设计
1.
sch = {
‘name‘: ‘清华大学‘,
‘tp‘: ‘公立学校‘,
‘addr‘: ‘北京‘
}
def shangke(x):
print("%s 正在上课" % x[‘name‘])
def zhaosheng(y):
print("%s%s 正在招生" % (y[‘tp‘], y[‘name‘]))
shangke(sch)
zhaosheng(sch)
清华大学 正在上课
公立学校清华大学 正在招生
2.
def school(name,tp,addr):
def shangke(x):
print("%s 正在上课" % x[‘name‘])
def zhaosheng(y):
print("%s%s 正在招生" % (y[‘tp‘], y[‘name‘]))
sch = {
‘name‘: name,
‘tp‘: tp,
‘addr‘: addr,
‘shangke‘: shangke,
‘zhaosheng‘: zhaosheng
}
return sch
s1 = school(‘北京大学‘, ‘公立学校‘, ‘北京‘)
s1[‘shangke‘](s1)
s1[‘zhaosheng‘](s1)
北京大学 正在上课
公立学校北京大学 正在招生
3.
def school(name,tp,addr):
def init(name,tp,addr):
sch = {
‘name‘: name,
‘tp‘: tp,
‘addr‘: addr,
‘shangke‘: shangke,
‘zhaosheng‘: zhaosheng
}
return sch
def shangke(x):
print("%s 正在上课" % x[‘name‘])
def zhaosheng(y):
print("%s%s 正在招生" % (y[‘tp‘], y[‘name‘]))
return init(name, tp, addr)
s1 = school(‘北京大学‘, ‘公立学校‘, ‘北京‘)
s1[‘shangke‘](s1)
s1[‘zhaosheng‘](s1)
北京大学 正在上课
公立学校北京大学 正在招生
用定义类+实例/对象的方式去实现面向对象设计
1.
在python2中下面的类称为经典类(python3中都叫新式类 class People(object):pass):
class People:
li = ‘老李‘
def chuan_men():
print(‘去隔壁串门‘)
a = People() # 类的实例化
print(People)
print(People.li)
People.chuan_men()
print(a)
<class ‘__main__.People‘>
老李
去隔壁串门
<__main__.People object at 0x7f7756c009e8>
2.
实例化的过程实际上就是调用 __init__(self)函数的运行,初始化构造函数。
class People:
def __init__(self,name,age,gender):
print(‘init开始‘)
self.mingzi = name
self.nianling = age
self.xingbie = gender
print(‘init结束‘)
p = People(‘隔壁老王‘, ‘45‘, ‘男‘) # 实例化
print(p.__dict__)
init开始
init结束
{‘nianling‘: ‘45‘, ‘xingbie‘: ‘男‘, ‘mingzi‘: ‘隔壁老王‘}
3.
p的属性字典里面没有li,它会去所在类Penple的属性字典里面去找.p的属性字典里也没有函数属性,调用motou(self)实际上是调用了类People里面的motou(self)函数。self就是实例本身。
class People:
li = ‘老李‘
def __init__(self,name,age,gender):
self.mingzi = name
self.nianling = age
self.xingbie = gender
def motou(self):
print(‘%s摸了一下你的头‘% self.mingzi)
p = People(‘隔壁老王‘, ‘45‘, ‘男‘) # 实例化
print(p.__dict__)
print(p.li)
p.motou()
People.motou(p)
{‘xingbie‘: ‘男‘, ‘mingzi‘: ‘隔壁老王‘, ‘nianling‘: ‘45‘}
老李
隔壁老王摸了一下你的头
隔壁老王摸了一下你的头
实例可以访问类属性(作用域),类访问不了函数属性。实例只有数据属性,至于方法(函数属性)都去类里面去找(引用)。
-----
标签:北京大学 logs class 结束 nbsp 清华大学 访问 定义类 数据
原文地址:http://www.cnblogs.com/lcgsmile/p/7505291.html