Python中的类的定义以及使用:

类的定义:

定义类 在Python中,类的定义使用class关键字来实现 语法如下:classclassName:"类的注释"类的实体 (当没有实体时 使用pass代替)

下面定义一个鸟类;

classflyBord:"""鸟类"""

pass     #这里我们并没有实体所以我们使用pass代替

这就是一个类的最基本的定义

类中的__init__函数:类似于java中的构造函数,以及类的使用

实例如下:

#eg:定义一个狗类

classDog:def __init__(self):   #方法名为 __init__ 形参必须要带一个self 当然也可以别名 self习惯使然

print("我是一只小狗")#创建一个实例

dog_1 = Dog()           #创建类的实例,也就是调用这个类

注意这里的方法__intit__(self)下划线是前面两个下划线,后面两个下划线,并不是一个下划线。

输出结果如下:

我是一只小狗

当一个类的实例被创建出来的时候__init__(self)方法就会被自动调用,类似于java,C#中的构造函数。

类中的类属性与实例属性:

实例如下:

#eg:定义一个猫类

classcat:

"""猫类"""

name= "小花" #类属性 可以通过类来调用

#__init__为实例方法

def __init__(self):     #self为实例参数

self.name_1= "小强" #实例属性 定义时必须要用实例参数.出来

那么接下来我们分别调用它的类属性,实例属性

#cat_1为实例名称

cat_1 =cat()

print(cat.name) #调用它的类属性

print(cat_1.name) #通过实例参数调用类属性

print(cat_1.name_1) #调用实例属性

接下来我们看一下输出结果:

小花

小花

小强

可以根据调用时使用的属性以及输出结果看到:

通过类名只可以调用类属性

通过实例名称可以调用类属性也可以调用实例属性

计算属性

在Python中,可以通过@property(装饰器)将一个方法转换为属性,从而实现用于计算的属性。

将方法转换为属性后,可以直接通过方法名来访问方法,而不需要再添加一对小括号"()",这样可以让代码更加简洁

#通过@property创建用于计算的属性的语法格式如下:#eg:

"""@property @property 装饰器

def methodname(self): methodname:用于指定方法名,一般使用小写字母开头。该名称最后将作为创建的属性。 self:必要参数

block block:方法体,实现具体的功能,可以通过pass代替"""

下面定义一个类来具体实现矩形面积的求法:

#eg:

classRect:def __init__(self,height,width):

self.height=height

self.width=width

@propertydefarae(self):return self.height*self.width

创建这个类的实例并且调用已经被写成计算属性的方法arae:

temp = Rect(800,600)print(temp.arae)

输出结果如下:

480000

可以看到我们在通过temp实例调用方法arae()时并没有带小括号(),因为arae()方法已经被我们写成了计算属性

继承的定义:

在编写类的时候,并不是每一次都要从空白开始编写,当要编写的类和另外一个已经存在的类存在一定的继承关系时,就可以通过继承来达到代码的重用的目的,提高开发效率。就如同在自然现象中的我们每个人都从父辈祖辈哪里继承了很多的特征,但又不完全是他们,我们又有自己的一些特征,在编程中被继承的类叫做父类或基类,新的类叫做基类或者派生类。

继承的语法:

"""class ClassName(baseclasslist): #ClassName派生类的类名 baseclasslist:被继承的父类;被继承的父类可以有多个

‘‘‘类的帮助文档‘‘‘ 帮助文档 可以在创建对象的时候输入类名和‘(‘时可以查看

statement 类体 可以使用pass替代

"""

下面定义两个父类在(父类中创建一个实例函数)和一个子类 子类继承父类:

classfather:def __init__(self):print("我是父亲")classmather:def __init__(self):print("我是母亲")classson(father,mather):pass

创建子类son的实例,并查看输出结果。

son =son()#输出结果:

我是父亲

可以看到子类是没有实例函数__init__()的,

但是创建实例的时候依然有输出结果,并且是调用了父类father的实例函数,

但是并没有调用父类mather类的实例函数,可见当子类继承了父类之后,

子类也会继承父类的函数,包括实例函数,但是只会继承第一个父类的函数

方法的重写:

当子类继承了父类的函数之后,函数是子类需要的,但是函数体又不是子类需要的。

这时子类就要对父类的方法进行重写

下面直接进行实例代码:

#eg:

classFruit:"""水果类"""color= "绿色"

defharvest(self,color):print("水果是"+color+"的!")print("水果已经收获.....")print("水果原来是"+self.color+"的!")classOrange(Fruit):"""橘子类继承自水果类"""color= "橙色"

def __init__(self):print("\n我是橙子")defharvest(self,color):          #重写父类函数harvestprint("橘子是"+color+"的!")print("橙子已经收获......")print("橙子原来是"+self.color+"的!")#创建Orange的对象

oran=Orange()

oran.harvest("黄色")

输出结果如下:

我是橙子 #子类Orange的构造函数

橘子是黄色的!

橙子已经收获......

橙子原来是橙色的!#这三句是子类继承自父类Fruit的函数,但是函数体与父类的函数体不同也就是我们说的重写

可以看到我们调用了继承自Fruit的方法harvest但是输出内容与父类的方法体不同,是因为我们在子类Orange中将harvest函数的函数体重写了

下面直接来一个小练习,废话不多说直接上代码:

"""练习 设计药品类medicine"""

from datetime importdatetimeclassMedicine:

name= ‘‘price=0

PD= ‘‘Exp= ‘‘

def __init__(self,name,price,PD,Exp):

self.name= name #药名

self.price = price #价格

self.PD = PD #生产日期

self.Exp = Exp #失效日期

defget_name(self):returnself.namedefget_GP(self):

start= datetime.strptime(self.PD, ‘%Y-%m-%d‘)

end= datetime.strptime(self.Exp,‘%Y-%m-%d‘)return (end -start).days

med= Medicine(name=‘格列宁‘,price=25000,PD=‘2018-9-8‘,Exp=‘2020-9-8‘)

name=med.get_name()

GP=med.get_GP()print(name)print(GP)

输出结果:

格列宁731

下一章咱们讲讲字符串的一些使用与注意事项

本博客皆是本人在自学Python期间的学习笔记,与一些学习心得,希望大家喜欢,每周一凌晨更新关于Python的知识。

p怎么调用python的实例属性_Python中类的声明,使用,属性,实例属性,计算属性及继承,重写...相关推荐

  1. python如何定义类_Python中类的定义、继承及使用对象实例详解

    本文实例讲述了Python中类的定义.继承及使用对象的方法.分享给大家供大家参考.具体分析如下: Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类 ...

  2. python color属性_Python中类的属性、方法及内置方法

    1.类的属性成员变量 对象的创建创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法, 句柄用于区分不同的对象, 对象的属性和方法,与类中的成员变量和成员函数对应, o ...

  3. python解析apk文件_Python获取apk文件URL地址实例

    Python获取apk文件URL地址实例 更新时间:2013年11月01日 10:22:39   作者:   我要评论 需要提取apk文件的特定URL地址的朋友可以看一下这个代码实例. 工作中经常需要 ...

  4. python括号的区别_Python中类-带括号与不带括号的区别

    类不带括号我们叫赋值,带括号我们叫实例化. 什么是赋值? a=7 b=a id(7) 140726814208448 id(a) 140726814208448 id(b) 1407268142084 ...

  5. python io密集 多线程_Python进阶:聊聊IO密集型任务、计算密集型任务,以及多线程、多进程...

    IO密集型任务 VS 计算密集型任务所谓IO密集型任务,是指磁盘IO.网络IO占主要的任务,计算量很小.比如请求网页.读写文件等.当然我们在Python中可以利用sleep达到IO密集型任务的目的. ...

  6. python创建实例属性_Python学习笔记__6.5章 实例属性和类属性

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 1.1.实例绑定属性 class Student(object): def __init__(self, name): self.name ...

  7. python的对象数组_Python当中的array数组对象实例详解

    计算机为数组分配一段连续的内存,从而支持对数组随机访问: 由于项的地址在编号上是连续的,数组某一项的地址可以通过将两个值相加得出,即将数组的基本地址和项的偏移地址相加. 数组的基本地址就是数组的第一项 ...

  8. python构造和析构_python魔法方法 构造和析构实例讲解

    目录: 一._ _init_ _(self[, ...]) 二._ _new_ _(cls[, ...]) 三._ _del_ _(self) 四.课时41课后习题及答案 说的那么厉害,那什么是魔法方 ...

  9. shell调用python函数 参数 返回_Python之系统shell交互(subprocess)

    subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码.这个模块的目的在于替换几个旧的模 ...

最新文章

  1. 阿里云 rds 在windows 里面恢复
  2. SVN钩子hooks使用
  3. android每秒 1,在Android 5.1中调度每秒的警报
  4. Nginx反向代理及简单负载均衡配置
  5. 收购小蓝单车部分资产、与ofo蜜月期结束,滴滴重构共享单车布局
  6. 作业计算机组成与原理,课程计算机组成原理与汇编语言作业四
  7. 树(2)-----leetcode(层、深度、节点)
  8. Maven进行Mahout编程,使其兼容Hadoop2.2.0环境运行 (转)
  9. UNIGUI中如果获得Session情况
  10. BZOJ 5261 Rhyme
  11. 通过一个具体的例子,讲解 SAP Cloud Platform Integration(CPI) 的使用方法
  12. 分享一个非常强大且好用的绘图控件QCustomPlot
  13. 如何把word文档转换成jpg图片
  14. 关于微信网页授权的用法
  15. movmedian函数matlab,MEDIAN函数用法及实例
  16. 网站隐藏跳转代码php,域名跳转代码[可隐藏与不隐藏域名转向代码(自动跳转代码) ]...
  17. 存款利息python题_python入门教程NO.8 用python写个存款利息计算器
  18. SDH(标准DH)和MDH(改进DH)
  19. 亚马逊家居行业中办公室家具市场前景分析及货源分享
  20. 大数据预测犯罪?不 是预防犯罪!

热门文章

  1. 如何成为一名优秀的高级C/C++程序员
  2. java ac自动机_如何使用Java实现AC自动机全文检索实例
  3. nvidia.dali:深度学习加速神器!
  4. 外国小哥,把整个 CNN 都给可视化了,卷积、池化清清楚楚!
  5. 数据中异常值的鉴定和处理(1)
  6. P5718 【深基4.例2】找最小值
  7. 第17课 欧耶欧耶 《小学生C++趣味编程》
  8. PHP请求一次网页前端浏览一次后端会出现两次请求次数的原因和解决方法。
  9. cortex m4 中文手册_江淮瑞风M4柴油版上市 售13.88-15.48万
  10. Python笔记-centos7使用adb连接真实手机及初始化uiautomatro2项目