注意:本章笔记代码模块中的__,部分场景由于显示问题,将双下划线连接在一起,实际上为双下划线(编译环境中显示样式:_ _)
- 概念
- 面向对象编程:定义类→实例化→执行动作
- eg. 把水蜜桃装进冰箱(Hint:水蜜桃属于水果类)
- 面向对象:定义类(水果)→实例化(水蜜桃)→执行动作(把水蜜桃放进冰箱)
- 面向过程:打开冰箱(怎么打开)→装水蜜桃(怎么装)→关闭冰箱(怎么关闭)
- 对比,处理新水果:西瓜
- 面向对象:实例化新实例(西瓜)→执行动作
- 面向过程:西瓜比水蜜桃大,思考怎么装进冰箱;西瓜太重,怎么顺手开冰箱
- 面向对象编程:定义类→实例化→执行动作
- 类
- 定义
- 实例化
- () 不可少
# 定义方法:
class Classname: # 定义规范,类名首字母大写
pass
# ---------------------------------------------------------------------------------
# 实例化
example = Classname() # ()不可少
- 补充知识:
- 对象三特征:value,id,type
- 函数:面向过程
- 方法:面向对象
- 特例:类中的_ _init_ _为构造函数
- 显示类包含的内容 : classname._ _dict_ _()
- 构造函数:构造实例的进程函数
- 语法 : def _ _init_ _(self):
- self表示当前实例,不可缺少
- 不能设置return值
- class执行当前实例的函数
- 方法:
- 包含普通方法和类方法
- 语法 : def methodname(self)
- self表示当前实例
- 任意返回值
- 调用类中方法的语法 : Classname.methodname()
- self不用输入参数
- 显示类包含的内容 : classname._ _dict_ _()
- 特例:类中的_ _init_ _为构造函数
- eg.
class Game:
# self 表示类实例化后的当前实例
def __init__(self): # 建立构造函数
pass
# 不能设return值,否则报错
def methodname(self): # 定义普通方法,类方法下文会提到
pass
# 正常设置return值
- 类属性:
- classname._ _dict_ _ 显示类/
- 类属性由类下所有实例共享
仅访用的定义:
- 可以访问类属性,使用方法(含类方法),但数据不在实例dict里,默认方式为访问
- 实例仅访用类
- 可以访问类属性,使用方法(含类方法),但数据不在实例dict里,默认为访问
- 若实例无新定义类属性:
- print自动打印类属性(默认设置为访问)
- ._ _dict_ _显示实例无类属性
# 验证实例仅访用类
# 实例仅访用类定义:
# 实例可以访问类属性,使用方法(含类方法),但数据不在实例dict里,默认方式为访问
class Game:
system = 'mobile game' # 类属性:所有实例可以访问
type = 'MOBA' # 类属性:所有实例可以访问
wzry = Game() # 类的实例化,游戏类:王者荣耀wzry
print(wzry.type)
print(Game.__dict__)
print('没有新定义实例属性后,实例的dict:')
print(wzry.__dict__)
jdqs = Game()
jdqs.type = 'FPS'
print('新定义实例属性后,实例的dict:')
print(jdqs.__dict__)
- 输出结果:
- 解释:
- 第6行语句输出MOBA,表示实例的type属性可以访问类属性type(MOBA)
- 第9行语句输出实例的dict显示为空,表示实例dict无类属性type
- 第6、9行语句验证了实例仅访用类的概念
- 第12行语句新定义实例的type属性
- 第14行语句输出实例的dict显示含新定义的'FPS',表示实例dict有属性type='FPS'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)