Python面向对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象相关的知识,希望对你有一定的参考价值。
1.面向对象的程序设计
将一类具体事物的数据和动作整合到一起即面向对象设计
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) 北京大学 正在上课 公立学校北京大学 正在招生
2.面向对象编程
用定义类+实例/对象的方式去实现面向对象设计
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‘} 老李 隔壁老王摸了一下你的头 隔壁老王摸了一下你的头
实例可以访问类属性(作用域),类访问不了函数属性。实例只有数据属性,至于方法(函数属性)都去类里面去找(引用)。
-----
以上是关于Python面向对象的主要内容,如果未能解决你的问题,请参考以下文章