python之面向对象

面向对象

  1. 概念
    面向对象是一种编程思想,是对现实中的事物进行抽象的方式
    详细解释见:百度百科
  2. 面向对象和面向过程区别
    面向对象关注的是谁能完成工作
    面向过程关注的是完成工作的步骤

  1. 概念
    类是对现实生活中一类具有相同特征事物的抽象,实质是一种用户定义的引用数据类型。
    事物有状态和行为,事物的状态对应类中的变量,事物的行为对应类中的方法。
  2. 类定义的语法格式
class 类名:
  变量或方法
  1. 类名的命名规则
    满足大驼峰命名法
  2. 类变量
    ①概念:类变量是定义在类中,不属于某个具体对象的特征,被所有对象共同使用
    ②定义和使用
# 定义
class 类名:
  类变量名=# 赋值
类名.类变量名=# 取值
对象名=类名()
类名.类变量名 #推荐
对象名.类变量名 #不推荐

③注意事项

  • 类变量推荐使用类名取值访问,也可以使用对象名取值访问
  • 类变量是能通过类名修改;使用对象名调用类变量修改类变量的值时会创建新的对象独有变量;如果此对象具有同名对象变量,则修改对应变量值
  • 类变量可以私有化
  1. 类方法
    ①概念:类方法是定义在类中,不属于某个具体对象的行为,被所有对象共同使用
    ②类方法的定义和使用
# 定义
class 类名:
  @classmethod
  def 类方法名(cls,形参1,形参2,……):
    方法体
    
# 调用
对象名=类名()
类名.类方法名(实参1,实参2,……)
对象名.类方法名(实参1,实参2,……)

③注意事项

  • 类方法中不允许使用实例变量和实例方法
  • 类方法中允许使用类变量和类方法,通过第一个参数cls进行
  • 实例方法中允许使用类变量和类方法

对象

  1. 概念
    对象是类的具体表现形式
  2. 对象的创建
    语法格式:对象名=类名()
# 举例
#创建类
class People:
  age=18 #类变量
# 创建对象
people=People()
  1. 注意
    一个类可以创建任意数量的对象

成员变量

  1. 概念
    成员变量用于描述对象固有的属性或状态
  2. 成员变量的定义和使用
# 定义
class 类名:
  def __init__(self):
    self.变量名1=值1
    self.变量名2=None
# 使用
对象名=类名()
print(对象名.变量名1) # 取值
对象名.变量名2=# 赋值
  1. 说明
  • 公有变量在__init__方法(构造方法)中声明,每个对象都具有该变量
  • self仅出现在成员方法中,指代执行该方法的对象
  • 独有变量在创建对象后声明,只有当前对象具有此变量
  • 定义对象的独有变量时,如果独有变量名与公有公有变量名相同,视为修改公有变量值;如果独有变量名与公有变量名不想同,视为定义新的独有属性
  • None含义是为空,表示没有具体的数据

成员方法

  1. 概念
    成员方法用于描述对象的固有行为
  2. 成员方法的定义和使用

格式一(无参方法):

# 定义
class 类名:
  def 方法名(self):
    方法体

# 使用
对象名=类名()
对象名.方法名()

格式二(有参方法):

# 定义
class 类名:
  def 方法名(self,形参1,形参2,……):
    方法体

# 使用
对象名=类名()
对象名.方法名(实参1,实参2,……)

举例:

class People:
  def talk(self):
    print("people can talk")
  def eat(self,food):
    print("people eat %s"%food)
people=People()
people.talk()
people.eat("rice")

__init__方法

  1. 作用:_init_方法,也称为构造方法,创建对象时为对象初始化成员变量
  2. 定义格式
# 格式一
def __init__(self):
  self.变量名=值1
  
# 格式二
def __init__(self,形参1,形参2,……):
  self.__属性名1 = 形参1
  self.__属性名2 = 形参2 
  1. 注意
  • __init__方法在创建对象时被运行,无需手动调用即可执行
  • __init__方法中如果有形参,在创建对象时需要传递对应的实参
  • 在类中声明、定义的方法,执行时无需手工调用,自动执行的方法称为魔术方法

__str__方法

  1. 作用:_ str _方法是在使用print函数打印输出对象到屏幕时被调用的方法,用于返回对象的规范化字符串表现形式
  2. 定义格式
def __str__(self):
  return 打印信息

静态方法

  1. 定义与调用
# 定义
class 类名:
  @staticmethod
  def 静态方法名(形参1,形参2,……):
    方法体
    
# 调用
对象名=类名()
类名.静态方法名(实参1,实参2,……)	 #(推荐)
对象名.静态方法名(实参1,实参2,……) #(不推荐)
  1. 各种方法定义规则
  • 只访问成员变量的方法,定义成实例方法
  • 只访问类变量的方法,定义类方法
  • 既访问成员变量也访问类变量的方法,定义成实例方法
  • 既不访问成员变量,也不访问类变量,定义成静态方法

封装

  1. 作用:封装操作可以对受访问保护的成员进行功能开发控制,达到保护数据不被非法访问的目的
  2. 私有变量和方法答定义
# 私有变量
self.__属性名=# 私有方法
def __方法名(self,形参1,形参2,……):
  方法体
  1. 标准封装语法格式
# 变量私有化格式
self.__属性名=# 提供公共访问器格式
def get_属性名(self):
  return self.__属性名

# 提供公共修改器格式
def set_属性名(self,属性名x):
  self.__属性名=属性名x

演示

  1. 定义类Phone
  2. 定义变量用于描述电量值
  3. 定义3个方法用于描述耗电操作
  4. 定义1个方法用于描述充电操作
  5. 运行程序,执行上述操作,观察结果
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的小强呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值