python 中面向对象编程简单总结1
1.类的定义方式
class ClassName(object): #object 表示继承的类,默认为object
pass
类的使用类似函数的调用,也可以认为是调用了一次模板来创建一个实例。
2.创建对象的属性和方法
不同于java等语言的定义,python是动态语言,因此可以给同一个类的不同实例动态地增加不同的属性。
xiaoming = Person()
xiaoming.name = "xiaoming" #赋值的时候创建一个实例的属性
xiaoming.gender = "male"
xiaohong = Person()
xiaohong.school = "sichuan university" #和xiaoming的属性可以不同
xiaohong.sex = "female"
在Python的中方法也可以动态地增加到实例对象中,需要用到 types.MethodType() ,这种情况在通常情况下不多见!一般还是定义在类中。
import types
def fn_get_grade(self):
if(self.score >= 80):
return 'A'
elif(self.score >= 60):
return 'B'
else:
return 'C'
class Person(object):
def __init__(self,name,score):
self.name = name
self.score = score
p1 = Person('Bob',90)
#动态为p1绑定方法
p1.get_grade = types.MethodType(fn_get_grade,p1,Person)
print p1.get_grade() #会输出A,方法动态绑定到p1对象上了
p2 = Person('Alice',65)
print p2.get_grade() #Error,p2没有这个方法
3.初始化实例属性
def __init__(self,attr1,attr2): #在创建实例是被自动调用
self.attr1_name = attr1
self.attr2_name = attr2
4.访问限制
以双下划线开头,且不以双下划线结尾的属性名,无法被外界访问
5.创建类属性和方法
为类所有,没有用self.attr 的方式来绑定到对象的属性,它在类的方法中要通过 类名.类属性名 如: Person.cout 来访问。千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。
class Person(object):
count = 0 #定义类属性
@classmethod #标记类方法
def how_many(cls): #cls表示类本身,作用相当于self
return cls.count
def __init__(self,name):
self.name = name
Person.count = Person.count + 1 #没有cls,需要用类名来访问类属性
print Person.how_many()
p1 = Person('Bob')
print Person.how_many()
python 中面向对象编程简单总结1的更多相关文章
- python 中面向对象编程简单总结2
1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): s ...
- python 中面向对象编程简单总结3--定制类
声明:资源来自慕课网python学习课程,以下只是个人学习总结,仅供参考 1.Python类的特殊方法 特征:以 __ 开头并结尾的方法,比如用于print的__str__() , __getatt ...
- python 中面向对象编程的几个概念
Python super() 函数 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会 ...
- 可爱的 Python : Python中函数式编程,第一部分
英文原文:Charming Python: Functional programming in Python, Part 1 摘要:虽然人们总把Python当作过程化的,面向对象的语言,但是他实际上包 ...
- Python之面向对象编程学习
不知不觉,学到了python的面向对象编程思想.今天我们来讨论下面向对象编程的思想. 顾名思义,面向对象,就是面向于对象,这里所说的对象不是你现实生活中你的女朋友,你的老婆,你的爱人,在编程的世界里面 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- Python:面向对象编程3 定制类(有更新)
Python:面向对象编程3 定制类(有更新) ⚠️本文主要内容为对Data model相关知识点的提取学习记录.(内容来自文档和部分网页教程案例) ⚠️:这个连接指向<流畅的python&g ...
- python中argparse模块简单使用
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
随机推荐
- POJ 2991 Crane(线段树)
Crane Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7687 Accepted: 2075 Special J ...
- (转) C#中Timer使用及解决重入(多线程同时调用callback函数)问题
原文链接: http://www.cnblogs.com/hdkn235/archive/2014/12/27/4187925.html
- mongoDB的权限管理
最近做一个关于mongoDB权限的功能, 在网上找了好久,各种命令,各种配置,各种修改,都没有解决哥的困惑.无奈,睡一觉后,灵光乍现,灵感来了. 下面就是我的最新发现,当然在各位看官的眼里,我的这个也 ...
- 记:cloudstack--gluster主存储上的一个文件损坏导致SSVM启动失败
cloudstack的系统vm(ssvm不停的重建失败).- 1.cloudstack-management 的关键日志 这行 cannot read header 'mnt.......':Inva ...
- Idea2016远程调试Java项目
一.在IDEA中配置远程tomcat 1.打开配置页面 选择"+" → "Tomcat Server" → "Remote" 填写名称和目标 ...
- JasperReport报表导出踩坑实录
写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...
- svn代码回滚和合并的利器svn merge
1.svn merge可以将两个对象的diff体现到本地工作目录上. (1)两个对象 这个两个对象可以是同一个svn url的两个revison,也可以是不用的url,比如分支和主干. (2)diff ...
- Flask之模板之宏、继承、包含
3.5 宏.继承.包含 类似于python中的函数,宏的作用就是在模板中重复利用代码,避免代码冗余. Jinja2支持宏,还可以导入宏,需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有 ...
- git之常用命令
git之常用命令 1.下载远程仓库最新代码 $ git pull --rebase origin master 2.上传代码 $ git push origin master 3.退出编辑 ESC + ...
- 「小程序JAVA实战」小程序和后台api通信(28)
转自:https://idig8.com/2018/08/19/xiaochengxujavashizhanxiaochengxuhehoutaiapitongxin28/ 开发最重要的就是实操! 小 ...