Python——献给那些对Python面向对象编程不知如何应用的同学们

简介:

    面向对象,看似不难。有的同学学过之后,还是不知道如何去使用它。有时候编写代码,写着写着就遇到坑了,比如写着写着就连你自己也在怀疑到底是不是面向对象编程了。

    因此,本人想了一个比较简单的例子,来用面向对象的方式去思考它,去编码。那么,我不会做过多的说明,我想我的代码应该是最容易让人看懂的!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#coding:utf-8
 
class  OS:
     #描述操作系统对象
     def  __init__( self , os_name):
         self .os_name  =  os_name
     def  start_install( self ):
         print ( "start install os:{0}" . format ( self .os_name))
 
class  Host:
     #描述主机对象
     def  __init__( self , host_id, brand, cpu, ram, disk):
         self .host_id  =  host_id
         self .brand  =  brand
         self .cpu  =  cpu
         self .ram  =  ram
         self .disk  =  disk
         self .os_type  =  None
 
     def  power_off( self ):
         print ( "host id:{0} Shutdown.." . format ( self .host_id))
 
     def  power_on( self ):
         print ( "host id:{0} Boot.." . format ( self .host_id))
 
     def  install_os( self , os_name):
         #服务器(host)可以安装操作系统
         os  =  OS(os_name)
         os.start_install()
         self .os_type  =  os.os_name
 
class  DataCenter:
     #描述数据中心对象
     def  __init__( self ):
         self .hosts_list  =  []
 
     def  add_host( self , host_id, brand, cpu, ram, disk):
         #数据中心里可以添加服务器(host)
         host  =  Host(host_id, brand, cpu, ram, disk)
         self .hosts_list.append(host)
 
     def  search_host( self , host_id):
         for  host  in  self .hosts_list:
             if  host.host_id  = =  host_id:
                 return  host
         return  False
 
if  __name__  = =  '__main__' :
 
     dc  =  DataCenter()
     dc.add_host( 201 "IBM" "16个" "128GB" "9TB" )
 
     host  =  dc.hosts_list[ 0 ]
     print (host.host_id, host.brand, host.cpu, host.ram, host.disk )
     print (host.os_type)
 
     host.install_os( "ubuntu14.04" )
     print (host.os_type)
 
     host.power_on()
     host.power_off()
 
     search_host_ret  =  dc.search_host( 201 )
     print (search_host_ret.disk)


    其实你可以这样思考:

    1、一个数据中心机房,可以有服务器,那么数据中心可以添加服务器,因此,描述数据中心对象的类可以有一个添加服务器的方法

    2、那么,一台服务器可以有品牌,CPU,内存等等,那么描述服务器对象的类,应该有这些属性,并且,服务器还可以安装操作系统,那么应该也给他设计一个安装操作系统的方法

    3、既然,服务器可以安装操作系统,那么在我的设计里,我把操作系统也看成了一个对象,描述操作系统对象的类中有操作系统名称,以及一个具体的安装方法


    最后,对于那些还比较茫然的同学看了此文之后,会不会有点启发呢?我这里的例子只是起到一个抛砖引玉的作用,水平有限,还望广大python爱好者批评并指出。非常感谢!

    


本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/2063228


相关文章
|
13天前
|
Python
python魔法方法如何应用
【4月更文挑战第12天】这个Python示例展示了类继承和方法重写。`Student`类继承自`Person`,并覆盖了`say_hello`方法。通过`super().__init__(name)`调用父类的`__init__`初始化`name`属性,`Student`添加了`age`属性,并在重写的`say_hello`中使用。创建`Student`实例`student`并调用其`say_hello`,输出定制的问候信息。
19 1
|
13天前
|
Python
python增量赋值运算的应用
Python中的增量赋值运算符用于便捷地执行算术操作,如`+=`, `-=`等,它们分别代表加法、减法、乘法、除法、取模、整除和幂运算。
13 1
|
13天前
|
Python
python一元运算符的应用
【4月更文挑战第12天】Python的一元运算符包括正号(+), 负号(-), 按位取反(~), 取绝对值(abs())和类型转换(int(), float(), str())。例如:`+a`使数值变正,`-a`变为负数,`~a`为按位取反,`abs(a)`获取绝对值,而`int(a)`, `float(a)`, `str(a)`则用于类型转换。示例代码展示了这些运算符的使用效果。
17 0
|
4天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
22 1
|
13天前
|
机器学习/深度学习 人工智能 算法
图像处理与分析:Python中的计算机视觉应用
【4月更文挑战第12天】Python在计算机视觉领域广泛应用,得益于其丰富的库(如OpenCV、Pillow、Scikit-image)和跨平台特性。图像处理基本流程包括获取、预处理、特征提取、分类识别及重建生成。示例代码展示了面部和物体检测,以及使用GAN进行图像生成。
|
1天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
4天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
12 1
Flask框架在Python面试中的应用与实战
|
5天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python构建简单的图像识别应用
本文将介绍如何利用Python语言及其相关库来构建一个简单但功能强大的图像识别应用。通过结合OpenCV和深度学习模型,我们将展示如何实现图像的特征提取和分类,从而实现对图像中物体的自动识别和分类。无需复杂的算法知识,只需一些基本的Python编程技巧,你也可以轻松地创建自己的图像识别应用。
|
7天前
|
数据挖掘 vr&ar Python
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
34 10
|
8天前
|
机器学习/深度学习 数据采集 供应链
从数据到决策:scikit-learn在业务分析中的应用
【4月更文挑战第17天】本文探讨了scikit-learn在业务分析中的应用,包括数据预处理、分类、回归和聚类模型的构建,以及模型评估与优化。通过使用scikit-learn,企业能有效处理数据、预测趋势、客户细分并制定决策,从而提升经营效率和市场策略。随着机器学习的发展,scikit-learn在业务分析领域的潜力将持续释放,创造更多价值。

热门文章

最新文章