python 面向对象

1. 面向对象编程— Object Oriented Programming

Define : 把对象作为程序的基本单元,对象既有数据又有操作数据的函数。

面向过程的程序设计:把程序看作一系列命令的集合,一组函数的顺序执行。

例如处理一个学生的成绩:

首先,表示一个学生的成绩

std1 = {'name':'liu','score': 90}
std2 = {'name':'zou','score': 99}
  • 1
  • 2

之后处理学生的成绩

def print_score(std):
  print('%s: %s' % (std['name'], std['score']))
  • 1
  • 2

面向对象的程序设计: 把计算机程序看作一组对象的集合,每个对象都可以接收其他对象发过来的消息,并进行处理。

考虑的不是程序的执行流程, 而是处理的对象 student,这个对象包含什么(属性),对这个对象的操作(print)

class Student(object):

    def __init__(self, name, score):
      """
      初始化类的属性
      """
        self.name = name
        self.score = score

    def print_score(self):
      """
      类中的函数称为 Method
      """
        print('%s: %s' % (self.name, self.score))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.类(Class)和实例(Instance)

面向对象设计思想来自自然界,主要概念是:类(Class)和实例(Instance)

Class 是一种抽象的概念,例如 鸟类 ; Instance 是根据类抽象的模版创建的具体的,比如 大雁 就是鸟类中具体的实例

1.类的定义

class Student(object):
  pass
  • 1
  • 2

Student 是类名— 通常大写开头

object 是表示继承的类,如果没有,一般使用 object

继承和不继承object的区别—详见参考

在 python 3 中,括号没不加 object,也会默认 继承 object 类

2.创建实例

liu = Student()
>>> liu
<__main__.Student object at 0x106a03358>
>>> Student
<class '__main__.Student'>
  • 1
  • 2
  • 3
  • 4
  • 5

liu 就是差 创建的一个实例 存放在 0x这个地址里面
Student 是一个 类 claas

3.绑定属性

可以在实例中绑定属性

>>> liu.name = 'liu'
>>> liu.score = 90
>>> liu.name
'liu'
  • 1
  • 2
  • 3
  • 4

由于类的作用就是一个模版,对于一些共有的属性可以写入类之中。 例如定义一个鸟的类,共性就是会飞,这个属性就可以写进,而这个 通过 init 实现

class Student(object):

    def __init__(self, name, score):
      """
      前后各有两个下划线
      """
        self.name = name
        self.score = score
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第一个参数永远是 self,self 是创建的实例本身—详见参考

class Test():
 def prt(self):
   print(self)
   print(self.__class__)

>>> T = Test()
>>> T.prt()
<__main__.Test object at 0x106a035c0>
<class '__main__.Test'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值