Python学习笔记(13)-Python类与对象示例
来源:互联网 发布:淘宝旧货市场 编辑:程序博客网 时间:2024/05/16 09:39
一,简介
Python支持面向对象编程,所以Python可以很容易地用面向对象的观点来组织代码,实现业务逻辑处理。
Python是一种动态语言,所以它的面向对象机制的定义和使用都挺有意思,所以本篇主要内容:
- Python类的定义
- Python类的动态语言特性
- Python类中属性的访问控制
二,Python类的定义
举个栗子先:
class Car:#类名Car madein="中国"#类属性 def setCarInfo(self):#类方法 self.name="解放牌汽车";#类的实例属性print(Car.madein)#通过类名直接访问类属性,输出:中国car=Car()#初始化print(car.madein)#通过对象访问类属性,输出:中国car.setCarInfo()#调用方法print(car.name)##访问实例属性,输出解放牌汽车
具体解释下:
- 类定义关键字为class
- 类方法定义与普通方法定义的区别是第一个参数必须是self,self代表的是类的实例化对象
- 类的属性分为两种,类属性和实例化属性,类属性是类所有对象共有的一个属性,可以通过类或者对象访问。而实例属性每个对象都拥有一个。
- 实例属性需要借助方法来实现,在方法中有self.XXX=123。则表示定义了实例属性XXX。
三,Python类的动态语言特性
好的,到目前为止一切正常,但是看下面一个例子:
class Car:#类名Car madein="中国"#类属性 def setCarInfo(self):#类方法 self.name="解放牌汽车";#类的实例属性car=Car()print(car.name)#报错信息:AttributeError: 'Car' object has no attribute 'name'
明明已经定义了类Car的实例属性self.name,但是为什么报错Car没有属性name呢。
这就要从Python语言的动态特性理解,Python语言不是预编译型的,也就是说Python自己都不知道类有什么属性,必须运行过了才知道!
如果先调用car.setCarInfo()
,在执行self.name="解放牌汽车"
时,此时类才有了实例对象self。所以要想给类定义实例属性,最好是在构造函数中定义,这样就能保证类一旦实例化出对象,该对象就具备了构造函数中的实例属性。如下代码中,因为在执行car=Car()时,调用了构造方法,所以执行了self.name=”解放牌汽车”,所以car.name这一实例属性已存在且被赋值。
class Car:#类名Car madein="中国"#类属性 def __init__(self):#构造方法 self.name="解放牌汽车";#类的实例属性car=Car()print(car.name)#输出解放牌汽车
OK,到这还没完,Python是动态语言嘛,所以其实可以玩的很开,例如:
#类定义class Car:#定义了类 madein="中国"#定义了一个类的属性#实例化car1=Car()#实例化了一个对象print(car1.madein)#输出中国car1.madein="非洲"#注意这是定义了一个实例属性,而类属性也是存在的print(car1.madein)#输出非洲,因为先访问实例属性print(Car.madein)#输出中国,类属性依然存在
四,Python类中属性的访问控制
Python也支持类的私有变量,也就是说类里面能访问的,类外面不允许访问。举个例子如下,在类属性名称前面添加__(两个下划线),该属性就成为私有变量,无法直接访问,但是可以通过类方法去访问(或设置)该私有变量的值。
class Car:#类 def __init__(self): self.name="大众"#名字公开 self.__price="10万"#价格保密 def getPrice(self): return self.__price;car=Car()#实例化了一个对象print(car.getPrice())#输出10万print(car.__price)#报错:AttributeError: 'Car' object has no attribute '__price'
从本篇来看,Python动态语言的本质暴露的十分明显啊。
0 0
- Python学习笔记(13)-Python类与对象示例
- python 学习笔记 -- 类与对象
- 类与对象学习笔记(Python)
- Python学习笔记(12)-Python模块与包示例
- python学习笔记13--类和对象
- Python学习笔记-Python对象
- python学习-07-浅谈对象与类(笔记)
- 13. Python脚本学习笔记十三类与对象
- Python对象学习笔记
- python对象学习笔记
- python学习笔记7:对象引用与对象
- python学习笔记十 类文件对象
- Python学习笔记 类和对象
- Python学习笔记----面向对象(类)
- Python学习笔记--类和对象
- Python学习笔记13:Python面向对象编程
- Python学习笔记 03 Python对象
- Python学习笔记(四)Python对象
- 两道有意思的leetcode数学题
- nginx+redis+tomcat 负载均衡 session共享
- 访问修饰符
- python:print输出内容大拼接,重新认识 + 和 ,
- 我的技术阅读书单(实体书部分)
- Python学习笔记(13)-Python类与对象示例
- [BZOJ 1913][Apio2010]signaling 信号覆盖:计算几何
- 为什么新生代内存需要有两个Survivor区
- 厦门之旅
- Xcode 中使用 MarkDown 语法标注
- Base64编码及其作用
- html5复习02-相对路径和绝对路径以及锚点设置
- U3D -- UGUI的锚点
- 激活函数类别