文章目录
- python学习笔记-10. python的面向对象编程
- 前言
- 一、面向对象的概念
- 1. 面向对象的概念
- 2. 面向对象3大特性
- 二、类、方法、类变量的定义
- 三、实例引用、实例变量的使用
- 总结
前言
一、面向对象的概念 1. 面向对象的概念
-
面向对象是一种编程思想,用这种思想为指导设计的程序,把数据和对数据的操作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能。
-
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
-
Encapsulation封装:
在类中对数据的赋值、内部调用对外部用户是透明的,这是类变成了一个胶囊或容器,里面包含着的数据和方法 -
Inheritance 继承
一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承 -
Polymorphism 多态
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是一种
python面向对象是指:一种程序设计思想。在面向对象中最重要的就是类,类是用来描述具有相同属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。
二、类、方法、类变量的定义- 类(class):用来描述具有相同的属性和方法的对象的集合,定义了共有的属性和方法,对象时类的实例
- 方法(method):类中定义的函数。类的方法和普通函数的区别在于类方法必须有一个额外的第一个参数名称self
- 类变量:类变量在整个实例化的对象中时公用的,类变量定义在类中方法体之外,类变量通常不作为实例变量使用。
# 使用关键字class定义类,类名(): class Person(): # 类中方法体外定义类属性 name = "testname" # 定义类方法,方法参数第一个参数必须为self def get_name(self): return self.name # 使用className()形式实例化类,person为实例化后的对象 person = Person() print(type(person)) #访问类属性和方法 print(person.name) print(person.get_name()) # 实例属性修改前,类属性修改,实例会加载类的最新属性 Person.name = "testname1" print(person.name) # 实例属性修改后,类属性修改将不再影响已修改实例的属性 person.name = "testname2" Person.name = "testname3" print(Person.name) print(person.name)三、实例引用、实例变量的使用
- 实例:类的具体对象即实例,比如类时人类,那么男人、女人、小孩等就是人类的对象,类是抽象的,实例时具体的
- 实例引用:给一个对象起别名
- 实例变量:实例属性,任意方法内部,以self.变量名定义的变量,只能通过对象访问,无法通过类名访问
class Person:
# 构造方法
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 定义实例变量
def set_att(self, testvalue):
self.testvalue = testvalue
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} 在跑步。")
xiaowang = Person("xiaowang", 10, "male")
xiaozhang = Person("xiaozhang", 12, "female")
print(xiaowang.eat())
print(xiaozhang.run())
总结
重点:
- 类的创建
- 类的实例化
- 对象调用



