Python学习,面向对象程序设计,欢迎关注公众号"Fish小站"讨论交流
面向过程:这是一种以过程为中心的编程思想,需要先分析解决问题所需要的步骤,在使用函数一步一步实现,在使用是依次调用,程序主要分为数据和操作数据的部分,核心极为数据结构和算法优化
面向对象:是一种程序设计思想,将对象作为程序的基本单元,一个对象包含数据和操作数据的函数,程序段中的对象可以接收其他对象发来的消息
面向对象 | 面向过程 | |
优点 | 易复用,扩展,低耦合 | 性能高 |
缺点 | 性能较低 | 不易复用,扩展 |
1、定义一个教师(Teacher)类,属性有姓名、年龄,方法有教学生
class Teacher(object):
# 创建类
def __init__(self, name, age):
self.name = name
self.age = age
def study(self):
print(f"{self.name}老师教学生")
ti = Teacher('张', 40)
# 实例化对象
ti.study()
# 调用方法
2、定义一个水果类,创建对象并添加属性
class Fruits(object):
pass
# 实例化对象
apple = Fruits()
# 给实例化对象添加属性
apple.color = 'red'
3、__init__方法的作用
在类中定义__init__方法,用于监听类实例化成对象的过程
使用__init__方法在创建实例时,实例具有自己特有的属性,在Teacher 类中,ti 这个对象有自己特有的属性‘张’、‘40’
4、__str__方法的作用
在类中定义__str__方法,用来追踪类中属性值的变化
# 使用__str__方法
class Fruits(object):
def __init__(self, color):
self.color = color
def __str__(self):
return f'{self.color}'
# 实例化对象
apple = Fruits('green')
print(apple) # green
apple.color = 'red'
# 修改对象的属性值
print(apple) # red
# 不使用__str__方法
class Fruits(object):
def __init__(self, color):
self.color = color
# 实例化对象
apple = Fruits('green')
print(apple) # <__main__.Fruits object at 0x000001C86CC00B20>
# 只能通过.运算符调用对应的属性进行输出
print(apple.color) # green
apple.color = 'red'
# 修改对象的属性值
print(apple) # <__main__.Fruits object at 0x000001C86CC00B20>
print(apple.color) # red
5、属性的权限
在属性名前加上__将属性设置为私有
class study(object):
def __init__(self, name):
self.__name = name
si = study('xm')
# print(si.name) # AttributeError: 'study' object has no attribute 'name'
# 类外部访问私有变量时
print(si._study__name) # 类外部访问内部私有属性格式:对象._类名__私有属性
# 尽量不要在类外部对类内部私有属性进行访问
6、子类与父类
子类重写父类的__init__方法后,再次使用父类方法时
super().__init__()
子类重写父类方法后会默认使用子类的方法