面向对象编程,是一种编程方式,这种编程方式需要使用“对象”来实现

对象的特征

  • 世间万物皆对象
  • 每个对象都是唯一的
  • 对象具有属性和行为(对象的行为包括具有的功能及具体的实现)
  • 对象具有状态
  • 对象分为类对象和实例对象两大类
    类对象:具有相同属性和行为的实例对象的抽象
    类对象是实例对象的模板,实例对象是由类对象创建出来的

面向对象编程的大体步骤

1.抽象出类对象
2.抽象出类对象的属性
3.抽象出类对象的行为(方法)
4.根据类对象创建实例对象
5.通过实例对象访问属性和方法

取名规则

  • 大驼峰规则:
    每个单词首字母大写
  • 小驼峰规则:
    第一个单词首字母小写,其他大写

定义类对象的语法格式:

class 类名(object):
#属性与方法
(object)表示该类对象继承自python内置的类对象object,python中所有的类对象都继承自一个统一的基类:object
例:class SomeClass(object):
....... pass

#初识属性:
class Cat(object):def __init__(self,breed,name,age,health):self.breed = breedself.name = nameself.age = ageself.health = health#初识类的方法:def run(self):print("a")def miao(self):print("b")def eat(self):print("c")

类的方法与函数的区别:

方法就是定义在类对象中的函数,方法与函数的区别在于:
1.定义方法时。方法的第一个形参表示调用该方法的实例对象,第一个形参的名字通常是self。也可以是其他名称。
2.调用方法时,系统自动将调用该方法的实例对象作为实参传递给第一个形参,第一个实参会传递给第二个形参,第二个实参会传递给第三个形参,以此类推

根据类对象创建实例对象的语法格式为:

类名([实参])

 #根据类对象创建实例对象
cat = Cat("波斯猫","喵喵",1,"很好")
print(cat.breed)

>>>波斯猫
cat.run()
>>>a

实例属性

实例属性指的是实例对象所绑定的属性
绑定实例属性(给实例对象绑定属性)的方式有两种:
1.在类对象的内部(方法中)
语法格式:self.属性名 = 属性值
2.在类对象的外部
python是动态语言,所以,在实例对象创建之后,可以对其动态地绑定属性。
语法格式:实例对象.属性名 = 属性值
如果指定名称的实例属性已经存在,则是对实例属性进行修改

访问实例属性的方式有两种:

1.在类对象的内部(方法中)
语法格式:self.属性名
2.在类对象的外部
语法格式:实例对象.属性名

    class MyClass(object):def __init__(self):self.ia1 = 18def do_sth1(self):print(self.ia1)def do_sth2(self):print(self.ia2)def do_another(self):self.ia2 = 56def do_sth3(self):print(self.ia3)
mc = MyClass()
mc.do_sth1()
#mc.do_sth2()(不能调用)

>>>18

mc.do_another()#先调用这个函数
mc.do_sth2()

>>>56

mc.do_sth3()没有定义,出错

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-13-c24edc76ceaa> in <module>()
----> 1 mc.do_sth3()<ipython-input-11-2614780adaa1> in do_sth3(self)9         self.ia2 = 5610     def do_sth3(self):
---> 11         print(self.ia3)12 mc = MyClass()13 mc.do_sth1()AttributeError: 'MyClass' object has no attribute 'ia3'
mc.ia3 = 66#外部赋值
mc.do_sth3()

>>>66

属性值是跟着对象的

mc2 = MyClass()
print(mc2.ia3)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-15-8b6c73677368> in <module>()1 mc2 = MyClass()
----> 2 print(mc2.ia3)AttributeError: 'MyClass' object has no attribute 'ia3'
#实例对象.__dict__(可获得该实例对象所绑定的所有属性及其值得字典)
mc.__dict__

>>>{'ia1': 18, 'ia2': 56, 'ia3': 66}

mc2.__dict__

>>>{'ia1': 18}

dir(mc)

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'do_another', 'do_sth1', 'do_sth2', 'do_sth3', 'ia1', 'ia2', 'ia3']

dir(mc2)

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'do_another', 'do_sth1', 'do_sth2', 'do_sth3', 'ia1']

面向对象编程 object oriented programming(OOP)相关推荐

  1. SystemVerilog HVL:面向对象编程(Object Oriented Programming, OOP)

    目录 1. 封装 1.1. 构造函数 new 与句柄 1.2. 调用句柄 1.3. 静态属性 与 静态方法 1.4. 权限(local和protected) 2. 继承 2.1. 子类的构造函数 3. ...

  2. Python编程基础:第三十九节 面向对象编程Object Oriented Programming

    第三十九节 面向对象编程Object Oriented Programming 前言 实践 前言 到目前为止我们都是函数式编程,也即将每一个功能块写为一个函数.其实还有一种更常用的编程方式被称为面向对 ...

  3. BioPython ② | 面向对象编程Object Oriented Programming

    BioPython ② | Python面向对象编程 题目要求 定义分子类(Molecule)作为基类,包含集合elements和weight作为其属性,用初始化函数,将elements初始化为空集, ...

  4. python, 面向对象编程Object Oriented Programming(OOP)

    把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数 ...

  5. 面向对象编程 object oriented programming(OOP)(第二篇)

    函数装饰器 对于某个函数,如果我们希望在不改变该函数代码的前提下,为该函数增加额外的功能,那么就可以使用装饰器来装饰该函数. 装饰器是一个函数,装饰器接收一个函数作为参数(传入的实参是被装饰的函数) ...

  6. Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming)

    Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming) 前言:此笔记为圣思园张龙老师讲述的java视频课程笔记,自己看视频学习时记录的, ...

  7. 面对对象编程(OOP, Object Oriented Programming)及其三个基本特性

    一千个读者,一千个哈姆雷特.对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 . 面向对象编程(OOP, O ...

  8. 面向对象编程(Object Oriented Programming)概念总结及延伸(一)

    1.介绍 笔者的梦想是成为一个架构师,但是要成为一个合格的架构师是相当不易的,它既需要丰富的项目经验也需要不断地吸取新的知识,而且在这过程中我们也要不断巩固基础知识.我也注意到了,现在主流的文章大都集 ...

  9. Object Oriented Programming面向对象编程

    OOP 面向对象编程( Object Oriented Programming)是一种 计算机编程 架构.OOP 的一条基本原则是 计算机程序是由单个能够起到子 程序作用的单元或 对象组合而成.OOP ...

最新文章

  1. 在线作图|小基因组——线粒体基因组圈图
  2. Win10安装Ubuntu系统
  3. python详细安装教程linux-python 在linux系统的安装教程
  4. C语言入门经典——基础知识(数据类型)(32位与64位系统基本数据类型的字节数)
  5. C++指针初始化总结
  6. ECMAScript6 规范
  7. 云数据库RDS_MySQL购买流程_以及购买步骤的建议
  8. python 动态规划_DP动态规划(Python实现)
  9. 什么样的人不适合互联网创业
  10. 房友手机服务器安装文件,房友软件服务器地址
  11. Windows XP 注册表修改大全
  12. 打破“中规中矩”,手机QQ何以萌翻众人?
  13. 可变步长最小均方 (VSS-LMS) 算法附matlab代码
  14. cassandra 概述
  15. 用java实现邮件发送
  16. MakerDAO亚洲区负责人王奇君:我的DAI很稳!
  17. STM32软件仿真卡住
  18. 009:semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)
  19. 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确
  20. 互动:腾讯云全员发iPhone11Pro,你们公司的年终奖是什么?

热门文章

  1. 【static关键字的作用是什么?它用在什么场景?static关键字深度解析来袭】
  2. thymeleaf的具体语法
  3. Android——浙理体育(飞翔的红蜻蜓)训练记录上传与查询测试DEMO解决方案
  4. Microtransactions
  5. Tomcat6 Spring3 问题:严重: Error configuring application listener of class org.springframework.web.conte
  6. Android NDK学习笔记4:JNI访问Java构造函数
  7. Android Studio 常见插件收藏
  8. ABAddressBookSave关于保存到通讯录失败的问题
  9. Android-源码剖析CountDownTimer(倒计时类)
  10. 正则表达式匹配单行注解