#对象:指数据和功能的组合
#面向过程:根据业务逻辑从上到下写代码
#面向对象:对数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程
面向对象和面向过程都是解决问题的一种思路,如一个人当遇到需求时,自己一步一步的操作去实现叫面向过程,如果找一个专业的人解决这个需求叫做面向对象,当然面向对象基于面向过程。
1、类的含义:类是对象的抽象化,类是一群具有相同特征或行为的事物的统称
2、类的定义:用 class 来定义类
3、类的命名:驼峰命名法(首字母大写)
4、类的属性:类可以看作是独立存放(属性及方法)的空间,就像人拥有其独特的特性(属性)以及行动(方法)
5、类与实例之间的联系:类: 是一个事物的抽像,不是真实存在的,描绘了事物的共性,
实例:某个事物的具体个体,是该类事物的具体表现,真实存在
实例对象可以获得类中所有的属性及方法。
class Object_Object(): # 定义类
name = '类属性1' # 类属性:即公共属性,只要是在同一类中,都可以调用
people = '类属性2'
a1 = Object_Object() # 实列化1
a1.sex = '实列化1属性'
print(a1.name) # 类在调用前必先实列化,否则无法被调用类属性
print(a1.people)
print(a1.sex) # 调用实列化1属性
a2 = Object_Object() # 实列化2 类可以多次实列化,且能调用共有属性
print(a2.name)
print(a2.people)
print(a2.sex) # 无法调用:在同一类中,一般情况多个实列化之间不互通
注:属性调用是先从实列中寻找目标,如果没有再进入类进行寻找
三、私又属性:起保护作用不影响属性的改变
概念:1.属性前加’_‘一个下划线,外部可以直接访问
2.属性前加’__'两个下划线,外部不可以直接访问
class Object():
_private = '私有属性1'
__funcs = '私有属性2'
a1 = Object() # 实例化
print(a1._private) # 调用私有属性1
print(a1.__funcs) # 无法直接调用私又属性2
print(dir(a1)) # 查看访问形式
print(a1._Object__funcs) # 通过'_类名__私有属性'去调用
四、初始化
class Object():
def __init__(self, names): # 建立初始化,传一个属性
self.names = names
self.funcs = '属性1'
def play(self): # play 是Object里面的方法
print(f'我有一个特有{self.names}就是玩')
Reals = Object('属性')
print(Reals.names)
Reals.play()
私有属性
class Object():
def __init__(self, names):
self.__names = names # 私有属性
self.funcs = '属性1'
def play(self):
print(f'我有一个特有{self.__names}就是玩') # 私有属性能在内部进行访问
Reals = Object('属性')
print(Reals.__names) # 结果报错 无法在外部直接访问
Reals.play()
私有属性外部调用:
class Object():
def __init__(self, names):
self.__names = names
self.funcs = '属性1'
def play(self):
print(f'我有一个特有{self.__names}就是玩')
def transfer(self):
return self.__names # 使用transfer方法调用内部属性
Reals = Object('属性')
print(Reals.transfer) # 调用transfer方法 完成在外部调用的目的
Reals.play()
在外部改变私有属性
class Object():
def __init__(self, names):
self.__names = names
self.funcs = '属性1'
def play(self):
print(f'我有一个特有{self.__names}就是玩')
def transfer(self):
return self.__names
def change(self, newnames): # 使用方法调用私有属性
self.__names = newnames # 重新赋值
return self.__names # 返回
Reals = Object('属性')
newnames = Reals.change('属性2') # 改变私有属性
print(newnames)
Reals.play()
五、方法:类属性就是针对类对象定义的属性 ,使用 赋值语句 在 class
关键字下方可以定义 类属性,用于记录 与这个类相关的特征
类方法就是针对 类对象定义的方法, 在类方法内部可以直接访问 类属性或者调用类的其他方法
class Method():
def __init__(self, names):
self.names = names
def transfer(self):
print(self.names)
def borrow(self):
self.transfer() # 内部方调用
newname = Method('属性')
newname.borrow() # 实现内部调用