一、面向对象
1、定义
- python是一门面向对象的语言
- 所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理问题,分析问题中参与其中的有哪些实体,这些实体该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题
2、两种编程思想
1)面向过程
- 一种以过程为中心的编程思想
- 首先分析解决问题所需要的步骤,然后用函数将这些步骤一步一步的实现,然后按顺序依次调用运行
2)面向对象
- 一种更符合我们人类思维习惯的编程思想
- 复杂的事情简单化
- 面向对象开发就是不断的创建对象,使用对象,操作对象做事情
3、面向对象程序设计规则
- 首先分析有哪些类
- 每个类有哪些属性和行为
- 类与类之间存在的关系
4、类、方法、类变量的定义
- 类(class):用来描述具有相同的属性和方法的对象的集合。它定义了集合中每个对象所共有的属性和方法。对象是类的实例
- 方法:类中定义的函数。类的方法与普通的函数只有一个特别的区别——他们必须有一个额外的第一个参数名称,按照惯例它的名称是self(其实取什么名字不重要,只是有这个参数就行,默认系统叫self)
- 类变量:类变量在整个实例化的对象是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用
class Person():
name = ''
def get_name(self):
return self.name
print('summer')
5、实例引用、实例变量
- 实例:类的一个具体对象,比如,车类是一个类,摩托车或者自行车就是车类的一个实例,类是抽象的,实例是具体的
- 实例引用:给一个对象起一个别名,比如,a是对象,b是a的引用,则a和b的地址空间都是一样的,修改b,则a就被同时修改
- 实例变量:实例属性,在任意方法内部,以‘self.变量名’的方式定义的变量。实例变量只能通过对象名访问,无法通过类名访问
class Person():
name = 'summer'
def get_name(self):
return self.name
print(Person.name)
# 实例化类
p = Person()
# 调用属性
print(p.name)
# 调用方法
print(p.get_name())
# 修改实例的属性
# p.name = 'xulinshan'
# print(p.name)
# 修改类的属性
Person.name = 'xuduo'
print(Person.name)
# 再调用实例,实例同样被修改
print(p.name)
# 先修改类的属性,再修改实例的属性,仍然是被修改
Person.name = 'xulinshan'
p.name = 'xuduo'
print(p.name)
# 先修改实例的属性,
p.name = 'XUDUO'
Person.name = 'XULINSHAN'
# 再创建实例2
p1 = Person()
# 修改实例2的属性,实例1的属性不会被修改
p1.name = 'xls'
print(p.name)
class Person:
# init方法是当我们调用class的时候,会用到的构造函数
# 公有属性
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 私有属性
def set_att(self,value):
self.value = value
# 定义共有的方法
def eat(self):
print(f'name:{self.name},age:{self.age},gender:{self.gender} 我在吃')
def drink(self):
print(f'name:{self.name},age:{self.age},gender:{self.gender} 我在喝')
def run(self):
print(f'name:{self.name},age:{self.age},gender:{self.gender} 我在跑')
# 实例化
summer = Person('summer', 26, '女')
glf = Person('glf', '28', '男')
print(summer.name)
summer.eat()
summer.drink()
summer.run()
print(glf.name)
glf.set_att('fit')
print(glf.value)