收藏 分销(赏)

Python面向对象基础.doc

上传人:w****g 文档编号:2143236 上传时间:2024-05-20 格式:DOC 页数:5 大小:85.83KB 下载积分:6 金币
下载 相关 举报
Python面向对象基础.doc_第1页
第1页 / 共5页
Python面向对象基础.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
Python面向对象基础 什么是面向对象编程? 面向对象编程是一种程序设计的范式,它把程序当做不同对象的相互调用,是对现实世界建立的一种对象模型。 面向对象编程的基本思想,也就是类和实例。 类 :类是用于定义抽象的类型。比如人,是一类东西 实例:实例是根据类的定义被创建出来的。比如小红同学,就是根据人的属性创建出来的。 # 我们通过class关键字定义一个类 class Person: pass # 通过类来创建一个实例,即类名加上一个类似于函数的调用来创建实例 xiaohong = Person() 数据封装:数据封装是面向对象一个很重要的特性 class Person: def __init__(self): self.name = name # 初始化实例的属性,self代表的是当前实例 p1 = Person('XiaoHong') 属性访问限制 我们可以给一个实例绑定很多属性,我们可以通过在属性名开头加上双下划线(__),让这些属性不被外部访问。 看下面例子: class Person: def __init__(self, name): self.name = name self._title = 'Mr' # 单下划线 self.__job = 'Student' # 双下划线表示私有属性 # 创建一个Person实例 p = Person('Tom') print(p.name) print(p._title) print(p.__job) => Tom Mr --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-1-0815b282cdc2> in <module>() 7 p = Person('Tom') 8 print(p.name) ----> 9 print(p.__job) AttributeError: Person instance has no attribute '__job' 由此可见,双下划线开头'__job'不能直接被外部访问。 但是问题来了,如果属性以'xxx'形式定义,那它又可以被外部访问。 因为以'xxx'定义的属性在python的类中被称为特殊属性,比如__init__/cmp/str/__int__等等这些都是类预先定义的特殊属性。通常我们不会以这种形式定义属性。 值得说明的是,以单下划线开头的,应该是不能被外部访问的,到底为什么,我也不知道。 为类创建属性 类是模板,而实例是根据类创建的对象。 实例属性每一个实例各自拥有,相互独立,而类属性只有一份。 当类属性和实例属性名字冲突时,优先选择实例属性。 class Person: job = 'Student' def __init__(self, name): self.name = name # 创建一个Person实例 p1 = Person('Tom') p2 = Person('Jak') print(Person.job) # 直接访问类的属性 # 因为python是动态语言,类实质也是个对象,所有类的属性也是可以动态添加和修改的 Person.job = 'Teacher' print(Person.job) # 实例属性每一个实例各自拥有,相互独立。 print(p1.name) print(p2.name) => Student Teacher Tom Jak 因此,实例属性每一个实例各自拥有,相互独立,而类属性只有一份。 定义实例方法 实例的私有属性是由双下划线开头的属性,无法被外部访问,但内部是可以访问的。 实例方法就是在类中定义的函数,它的第一个参数永远是self,指向调用该方法的实例本身。 在实例方法内部,可以访问所有实例属性,如果外部需要访问实例属性,可以通过方法调用获得。 class Person: def __init__(self, name): self.__name = name def get_name(self): return self.__name p1 = Person('Tom') print(p1.get_name()) => Tom 万事万物接对象,类和函数都是对象。 p1 = Person('Tom') print(p1) print(p1.get_name) print(p1.get_name()) => <__main__.Person instance at 0x000000000BBAD448> <bound method Person.get_name of <__main__.Person instance at 0x000000000BBAD448>> Tom 创建类的方法 和属性类似,方法也分实例方法和类方法。 在类中定义的全部是实例方法,实例方法第一个参数self是实例本身。 在在类中定义类的方法,需要在方法上面使用@classmethod class Person(object): count = 0 @classmethod def how_many(cls): # 统计该类的实例个数 return cls.count def __init__(self, name): self.name = name Person.count = Person.count + 1 print Person.how_many() p1 = Person('Bob') print Person.how_many() => 0 1 结语 这只是简单介绍面向对象,如果要深入,多看书。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服