问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何深入理解Python中的面向对象的思维

发布网友 发布时间:2022-04-21 05:58

我来回答

1个回答

热心网友 时间:2022-04-07 12:47

ython使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程。
面向对象的最主要目的是提高程序的重复使用性。我们这么早切入面向对象编程的原因是,Python的整个概念是基于对象的。了解OOP是进一步学习Python的关键。
下面是对面向对象的一种理解,基于分类。
相近对象,归为类
在人类认知中,会根据属性相近把东西归类,并且给类别命名。比如说,鸟类的共同属性是有羽毛,通过产卵生育后代。任何一只特别的鸟都在鸟类的原型基础上的。

对这方面感兴趣,想要学习python或者想要了解python可以加群:623715703
面向对象就是模拟了以上人类认知过程。在Python语言,为了听起来酷,我们把上面说的“东西”称为对象(object)。
面向对象的基本思想是封装,继承,多态。
首先是继承:
定义一个类:
复制代码 代码如下:
class Bird(object):
have_feather = True
way_of_reproction = 'egg'
调用这个类:
summer = Bird()
print summer.way_of_reproction
与Java不同是,Python是不需要new来实例化类的。
同样,Python的类下面是可以定方法的:
def say(self, word='hi hi'):
print 'i say :' + word
注意一点,所有类的函数,必须至少带有一个参数,这个参数必须是self。
类以外的函数没有这一个*。
chk = Chicken()
print chk.have_feather
print chk.sat('hello')
__init__()方法
__init__()是一个特殊方法(special method)。Python里会有一些特殊方法,Python会以特别的方式处理它们。特殊方法的名字的特点是前后都有两个下划线。

__init__()方法的特殊在于,如果你在类中定义了这个方法,一旦你根据这个类建立对象,Python就会自动调用这个方法(这个过程也叫初始化)。
如:
class happyBird(Bird):
def __init__(self,more_words):
print 'We are happy birds.',more_words
hb = happyBird('Happy,Happy!')
父类方法的重载:
class Hello(object):
name = 'hello'
def __init__(self):
self.name='my name is hello'
#类中的参数必须带有self参数
def sayhi(self):
print 'hi you'
class World(Hello):
#这里访问的是父类初始化的变量名
print 'before:',Hello.name
super(World,self).__init__()
#由于调用了父类的初始化构造函数,继承了父类的变量的改变
print 'after:',self.name
#近似于方法重载
def sayhi(self,word='baby'):
#调用父类sayhi方法
super(World,self).sayhi()
print 'hi '+word
def sayWorld(self):
print 'hi,hello world'
if __name__ == '__main__':
c = World()
c.sayhi()
c.sayWorld()

另外,python是允许多继承的,但是这个是个非常危险的操作,建议不要随便使用。
关于Python的多态,就像JavaScript一样,直接访问对象的属性,不需要使用接口,没有类型转换。
对于类型的判断,有抓们的type()函数,和isinstance()函数判断是否某个函数的子类。
isinstance(object, classinfo)
判断实例是否是这个类或者object是变量
classinfo 是类型(tuple,dict,int,float)
判断变量是否是这个类型
class objA:
pass
A = objA()
B = 'a','v'
C = 'a string'
print isinstance(A, objA)
print isinstance(B, tuple)
print isinstance(C, basestring)
输出结果:
True

将东西根据属性归类 ( 将object归为class )
方法是一种属性,表示动作
用继承来说明父类-子类关系。子类自动具有父类的所有属性。
self代表了根据类定义而创建的对象。
建立对一个对象: 对象名 = 类名()
引用对象的属性: object.attribute
希望小伙伴们早日成为大牛!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win10电脑hdmiwin10笔记本hdmi连接电视没反应 平板电脑与电视机联接华为平板怎么投屏到电视上 长虹chiq电脑无线投影如何无线把电脑屏幕投影到电视屏幕上 模拟电视电脑系统智能电视怎么变成电脑系统 ops电脑加装固态硬盘ops电脑是什么意思 我想问一下立宇泰电子的ARMSYS6410开发板可以外接什么模块? 小心那些处理过的2元绿幽灵,教你这几招就能识别! 如何辨别人民币是否水洗过,刚有兴趣做收藏可去买第四套人民币还有是否水... oppor7splus手机怎么样现在?照相好不好。是多会儿出来的机子呢。目前... ps怎么改像素大小且不模糊 python面向对象14:类方法与实例方法与静态方法 python面向对象的问题 Python编程 面向对象程序设计 python程序题 Python作业,面向对象程序设计? 利用Python面向对象的编程,求出正方形(4),长方形(3,5)的面积和周长,代码怎么写? 大象象征着什么意义 python程序题求解 大象有哪些种类 python的两种编程方法 世界上最大的大象在哪里.?? 一个python编程题目——面向对象的 大象的种类? Python面向对象编程之继承与多态详解 python面向对象编程作业 大象的生活习性是什么 Python程序设计,求大神解答 大象是什么动物!!? Python面向对象编程题 大象的特点是什么? python 面向对象基础 新手求教python 面向对象编程的一个问题 excel中怎么按姓名排序? excel怎样让两张表的顺序相同? excel怎么把两个表格同一个数据变成一个顺序 在excel表格中怎么让两列顺序一致 魅族m681q密码忘了如何解锁 excel两列乱序如何使姓名一一对应? excel中两张排序不同的怎样表实现排序一致 Excel如何使得G列和A列相同数值的排列到同一行? 怎么 把2个excel表所有格式都变成相同的 excel如何将同一页中两个表格相同内容对齐行 404 Not Found 红蚂蚁电动四轮车车顶漏水 红蚂蚁四轮电动车换上新电池怎么没有电? 红蚂蚁电动车四轮车是超标的吗? 红蚂蚁电动车怎么样 红蚂蚁电动车四轮质量怎么样 红蚂蚁电动三轮车有新国标的吗? 红蚂蚁电动四轮车怎么加玻璃水