python基础编程的ppt,Python基础编程.ppt

《Python基础编程.ppt》由会员分享,可在线阅读,更多相关《Python基础编程.ppt(41页珍藏版)》请在人人文库网上搜索。

1、1,Python OOP 基础周鹏,课程目标,了解 Python OOP 特性 简单讲解应用场景(B2B SA) 简单讲解编程思路,3,本课目标,熟悉对象和类的基本概念,对象和类,什么是对象? 一切皆对象: 1 ”String” ”L”, 2, 3, ”ist” ”x” : 1, ”y” : 2, def func(): dir(dog) wangcai = dog(); help(wangcai); dir(wangcai) wangcai.bark() dog.bark() dog.bark(wangcai) - 说明什么?,对象和类,说明 类定义需要指定构造方法 __init__(),当。

2、执行 wangcai = dog() 时实际上是执行了 dog.__init__(wangcai) 这个方法(函数)! - 如果不指定? 所有的方法必须指定一个默认的参数 self 作为第一个参数 - 如果不指定? 类定义本身也是对象,因此可直接调用,如前所示 在类中对自身属性的引用必须显式的使用 self - 否则?,对象和类,例: print dog.mouth print wangcai.mouth print dog.bark print wangcai.bark 说明什么? 如果要定义在类中默认存在的属性?,对象和类,定义类的属性 class dog: jaw = ”sharp”, 。

3、32 paw = ”long”, 5 def __init__(self): . print dog.jaw xiaohei = dog() print ” ”.join(str(x) for x in xiaohei.paw),对象和类,方法的参数 练习:定义一个 dog 类,包含 jaw,paw,mouth 等属性以及bark(),escape(),bite() 和 eat() 等动作,以及 reaction() 动作,reaction 对各种外部刺激做出反应,如攻击(attack)则吠叫并逃跑,食物则吃,人则吠叫并咬(用字符串表示刺激动作)。定义一个实例 xiaohuang,实际运行这些。

4、反应,反应时必须与对应的属性匹配,例如咬必须使用 mouth 等.,对象和类,型与类 型 type 类 class 型就是系统默认内置的类,如?. type(1, 2, 3) type(list) 或者说,类就是型的一种,对象和类,型与类 d = dog() type(d) d type(dog) type(classobj) Traceback (most recent call last): File , line 1, in ? NameError: name classobj is not defined,对象和类,型与类 type(object) type(list) type(ty。

5、pe) ,继承,基本概念 狗 腊肠狗 哈巴狗 一只叫“旺财”的“土狗”,继承,定义子类 class Dog: def __init__(self): self.sound = wangwang def bark(self): print self.sound class Husky(Dog): def __init__(self): self.sound = woowooo niub = Husky() niub.bark(),继承,定义子类 到目前为止,可以看到OOP的哪些好处? - 封装 - 代码复用,继承,定义子类 class Sharpei(Dog): def __init__(sel。

6、f): self.sound = aoao suobi = Sharpei() suobi.bark() 此时运行 niub.bark()? 说明:子类之间的属性不会互相影响,继承,定义子类 如果执行如下语句: suobi1 = Sharpei() suobi1.sound = kaokao 此时再执行 soubi.bark()? 说明:实例之间的属性也不会互相影响,继承,更复杂的复用例子 class Dog(object): def __init__(self): self.sound = wangwang self.paw = sharp self.jaw = long def bark(。

7、): . class Sharpei(Dog): def __init__(self): Dog.__init__(self) self.sound = aoao ,继承,类、子类和实例的关系 术语 inheritance, is-a 沙皮狗 is-a 狗 suobi is-a 沙皮狗 比较 composition, has-a? 属性也可以是一个类的实例(instance),继承,类、子类和实例的关系,继承,名字空间在类中的表现 class Dog: paw = None def __init__(self): self.sound = wangwang self.fur = print T。

8、his is a Dog: %s % self.sound def grow(self): self.teeth = white,继承,名字空间在类中的表现 class Husky(Dog): brain = 0.9 def __init__(self): Dog.__init__(self) # super(Husky, self).__init__() # SAME EFFECT BUT BETTER self.sound = woowooo self.fur = + print This is a Husky: %s, fur: %s % (self.sound, self.fur) d。

9、ef grow(self): self.paw = grey fold self.teeth = white sharp self.fur = grey long def work(self): self.paw = white unfold self.muscle = 0.9,继承,名字空间在类中的表现 print “ntest 1 links print niub.__dict__: %s % niub.__dict__ print niub.__class__: %s % niub.__class__ print Husky.__bases__: %s % Husky.__bases__。

10、 print “ntest 2 namespace print niub.__dict__: %s % niub.__dict__ print Husky.__dict__: %s % Husky.__dict__ print Dog.__dict__: %s % Dog.__dict__ print “ntest 3 __dict__ changes niub.grow() print after grow(): print tniub.__dict__: %s % niub.__dict__ print tHusky.__dict__: %s % niub.__dict__ print t。

11、Dog.__dict__: %s % Dog.__dict__ niub.work() print “when work(): print tniub.__dict__: %s % niub.__dict__ print tHusky.__dict__: %s % niub.__dict__ print tDog.__dict__: %s % Dog.__dict__,继承,名字空间在类中的表现 结果说明,继承,类、子类和实例的关系,继承,名字空间在类中的表现 __dict__ 是内置的属性 本质:目录索引 使用 __class__ 和 __bases__ 向上链接,继承,名字空间在类中的表现。

12、 如果改变了 __dict__ 的值? 一个 C 中名字覆盖的例子: C: fork() Python: os.fork(),继承,运算符重载 什么是运算符? a + b ? x = 1 print x.__add__(2) y = 2 y.__mul__(3),继承,运算符重载 x = Husky() y = Husky() x + y ? class Husky(Dog): . def __add__(self): baby = Husky() return baby . 函数(方法)重载,继承,运算符重载 运算符举例 __add__ __radd__ __mul__ __iadd__ _。

13、_str__ __repr__ __and__ __or__ __getattr__ __setattr__ __getitem__ __setitem__ __len__ __cmp__ __lt__ __eq__ __gt__ __iter__ (迭代器回顾) __call__,多态,概念 Polymophism 例如: 1 + 2 a + b x = Husky() y = Husky() x + y ?,多态,概念 多态即对方法的重载 在Java、C+中,方法的重载必须先进行继承,而在Python中,可以在两个不相干的类中定义同样的方法接口,从而实现多态性 回顾前面对Husky和Sha。

14、pei类的bark()方法的定义?,多态,一个例子:Fake File 回顾:文件重定向? buffer = class FakeFile: def write(self, string): buffer.append(string) import sys _stdout = sys.stdout sys.stdout = FakeFile() print somesthing 思考:有何作用? - FakeDatabase,多态,运算符多态,多态,还有哪些地方可以应用多态? 测试中的 mock 技术?,项目实例,转到 PPT2,一点编程经验,关于正交性 rootsyslog01 /root #logexec -c1 -m 20252 #logexec -c1 -s -m strace:STrace strace -p 20252 2&1,Any Questions ?,End, Thank you。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值