第四章 python中的面向对象设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四章 python中的面向对象设计相关的知识,希望对你有一定的参考价值。

一、首先来理解几个面向对象的关键特性:

1、封装:对象可以将他们的内部状态隐藏起来。python中所有特性都是公开可用的。

2、继承:一个类可以是一个或多个类的子类。python支持多重继承,使用时需要注意继承顺序。

3、多态:实现将不同类型的类的对象进行同样对待的特性--不需要知道对象属于哪个类就能调用方法。

 

二、创建自己的类

技术分享
 1 >>> class Person:           
 2 ...     def setname(self,name):
 3 ...             self.name = name
 4 ...     def getname(self):
 5 ...             return self.name
 6 ... 
 7 >>> p = Person()
 8 >>> p.setname(‘darren‘)
 9 >>> p.getname()
10 ‘darren‘
技术分享

很简单吧,这里有个self参数需要说明的,可以称为对象自身,它总是作为对象方法的第一个参数隐式传入!那么类中的有些方法不想被外部访问怎么办?
可以在方法前加双下划线,如下:

技术分享
 1 >>> class Sercrt:
 2 ...     def greet(self):
 3 ...             print("hello,abc")
 4 ...     def __greet1(self):
 5 ...             print("i don‘t tell you ")
 6 ... 
 7 >>> s = Sercrt()
 8 >>> s.greet()
 9 hello,abc
10 >>> s.__greet1()
11 Traceback (most recent call last):
12   File "<stdin>", line 1, in <module>
13 AttributeError: Sercrt instance has no attribute ‘__greet1‘
技术分享

如何指定超类呢?通过子类后面跟上括号里面写入基类即可实现。

技术分享
 1 >>> class Bird:       
 2 ...     def fly(self):
 3 ...             print("I want to fly more and more higher")
 4 ... 
 5 >>> class Swallow(Bird):
 6 ...     def fly(self):
 7 ...             print("Swallow can fly")
 8 ... 
 9 >>> 
10 >>> s = Swallow()    
11 >>> s.fly()
12 Swallow can fly
技术分享

 1、构造方法:创建一个新对象时,调用构造方法,用于类的初始化

python中用__init__()表示构造方法,当子类继承父类时,如果子类重写了构造方法,这时如果要继承父类的构造方法,需要用super(子类,self).__init__()

2、属性:porperty(get,set)

3、静态方法和类成员方法:这两种方法无需创建对象,直接通过类名称进行调用,如下:

技术分享
 1 >>> class Myclass:
 2 ...     @staticmethod
 3 ...     def smeth():
 4 ...             print("i am static method")
 5 ...     @classmethod
 6 ...     def cmeth(cls):
 7 ...             print("i am class method")
 8 ... 
 9 >>> 
10 >>> Myclass.smeth()
11 i am static method
12 >>> Myclass.cmeth()
13 i am class method
技术分享

      

 


以上是关于第四章 python中的面向对象设计的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

《面向对象程序设计(Java)》第四周学习总结

对于“2017面向对象程序设计(Java)第五周工作总结”存在问题的反馈及本周教学计划

面向对象设计与构造第四次课程总结

python面向对象:什么是面向对象程序设计

c++面向对象程序设计 课后题 答案 谭浩强 第四章