认识面向对象
- 与面向过程对比:
- 面向过程:数学逻辑的映射,学会做个好员工
- 面向对象:生活逻辑的映射,学会做个好领导
- 生活实例
类 人 手机 电脑 对象 习大大、普京 我的iPhoneX、你的华为P30 我桌上的Mac、你桌上的T400 - 官方定义
- 类:具有相同特征(属性和行为)事物的抽象
- 对象:某个类的具象
- 编程语言
- 类:是一种自定义的数据类型
- 对象:某个类类型的变量
面向对象语法
- 类的定义
class 类名: pass
- 语法说明
- 定义类的关键字:
class
- 类名:原则上符合标识符命名规范即可,但是通常都采用大驼峰风格命名,如:
UserName
- 类名后不要忘记冒号,类的内容要进行整体缩进
- 行为通过方法体现,属性通过变量体现(可以动态添加)
- 成员访问:
- 属性:对象.属性名
- 方法:对象.方法名()
- 定义类的关键字:
- 示例:
# 定义类 class Person: # 行为通过方法进行体现 # 吃饭 def eat(self): print('红烧肉我喜欢吃') # 睡觉 def sleep(self): print('睡觉是一种生活态度') # 创建对象 haotian = Person() # print(type(haotian)) # print(haotian) # 调用成员方法 haotian.eat() haotian.sleep() # 属性是动态添加的 haotian.age = 22 print(haotian.age)
self
class Person: def run(self): # self表示当前对象,此时调用该方法的对象 print('{}每天以1m/s的速度锻炼2km'.format(self.name)) def introduce(self): # 既可以访问成员属性 print('我叫{},今年18岁'.format(self.name)) # 也可以调用成员方法 self.run() haotian = Person() haotian.name = '浩田' # haotian.run() haotian.introduce() chuangyi = Person() chuangyi.name = '创义' # chuangyi.run() chuangyi.introduce()
__str__
class Person: # 没有重写该方法,打印对象时会输出:类名 + 地址 # 重写次方法,打印对象时会打印该方法的返回值(必须是个字符串) def __str__(self): return '我叫{},今年{}岁'.format(self.name, self.age) james = Person() james.name = '勒布朗.詹姆斯' james.age = 34 # 打印对象时,会调用__str__方法 print(james) # 使用str方法时,也会调用__str__方法 s = str(james) print(s)
__init__
class Cat: def __str__(self): return 'name:{} age:{} color:{}'.format(self.name, self.age, self.color) # 构造方法:创建对象后,系统会自动调用该方法完成初始化设置 def __init__(self, name, age, color): self.name = name self.age = age self.color = color ''' jiafei = Cat() jiafei.name = '加菲' jiafei.age = 3 jiafei.color = 'orange' ''' jiafei = Cat('加菲', 3, 'orange') print(jiafei)
__del__
class Pig: # 析构方法:当对象即将释放时,系统会自动调用该方法 # 该方法一般做资源释放操作,如:断开数据库连接,文件关闭等 def __del__(self): print('大师兄,我快不行了') bajie = Pig() del bajie print('八戒,一路走好!')
- 思考:小明手里有两张牌,左手♥K,右手♠A,小明交换两手的牌后,手里分别有什么?
- 先找到对象:小明、左手、右手、♥K、♠A
- 根据对象抽象类:人、手、牌
- 设计相关的类,不断调整和完善
- 代码:见
标签: python
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~