Python_面向对象
2021/12/9 22:22:51
本文主要是介绍Python_面向对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、什么是面向对象
面向对象是一种编程思想,现在主流的编程思想有两种:面向过程、面向对象,这其中以面向过程为代表的有C语言,面向过程则是JAVA和Python。
面向过程是把一个个函数和数据(用于方法的参数) 。然后按照一定的顺序,执行完这些方法(每个方法看作一个过程),等方法执行完了,事情就搞定了。
面向对象则不注重过程,而是会把事物抽象成对象的概念就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。
二、类和对象
对象和类是面向对象的两个核心点,我们首先要把他们区分出来。
对象:对象就是一个具体的事物,比如看到一只猫,看见的是眼前的这只猫,它有特有的眼睛鼻子嘴巴
类:类就是收集了对象的一些属性和方法,比如现在想一只猫,脑海中想的是猫的基本特征,比如眼睛鼻子嘴巴大概的样子,身体大概的样子。
三、定义类和对象
定义一个类的格式
class Cat: age = "" 类属性 def age_get(self): 类方法 print(age)
- 定义类的时候一定要有的类属性和类方法,属性是类的一些基本数据,类方法是类的特有功能。
- 类的名字定义首字母大写
- age_get是一个实例方法,第一个参数一般是self,表示实例对象本身
创建一个类(实例化对象)
cat1 = Cat() cat2 = Cat() cat3 = Cat()
- python中可以根据已经定义的值创建多个对象
创建类和实例化对象
class Dog: color = "yellow" age = "2" def eat(self): print("狗在吃骨头") dog = Dog() dog.eat()
当创建一个对象时,就是用同一个模子,来制造一个实物
四、对象属性值和魔法函数
class Dog: # 创建一个狗类 color = "yellow" # 狗的颜色类属性 age = "2" # 狗的年龄类属性 def eat(self): # 狗的类方法 print("狗在吃骨头") dog = Dog() # 实例化狗对象 dog.color = "黄色" # 给狗对象的颜色属性改变 print("狗的颜色是:%s 狗的年龄是:%s" % (dog.color, dog.age)) dog.eat()
注意:dog.color = "黄色" 这里改变的是dog这个对象的color属性,类Dog的color并没有改变
类方法中输出属性
class Dog: # 创建一个狗类 color = "yellow" # 狗的颜色类属性 age = "2" # 狗的年龄类属性 def output(self): # 狗的类方法 print(self.color) # self是对象本身的意思,这里是指Dog对象的color print(self.age) dog = Dog() # 实例化狗对象 dog.color = "黄色" # 给狗对象的颜色属性改变 dog.output() # 调用对象的函数
类中调用自己的类属性要用到self
五、魔法函数
魔法函数是在创建对象时就会调用,我们可以利用它这一特性,从而在创建对象的时候就给对象属性赋值。
class Cat: name = "咪咪" age = "3" sex = "母" def __init__(self, a, b, c): # 魔法函数__init__我们在这里给三个形参,把它们给对象属性 super().__init__() self.name = a self.age = b self.sex = c def __del__(self): # 魔法函数__del__ 被删除时会调用 return "我被删除了" def __str__(self): # 魔法函数__str__ 输出对象时调用 return "输出了对象本身" def output(self): print(self.name) print(self.age) print(self.sex) cat = Cat("小菊", "1", "4") # 传入__init__参数 cat.output() print(cat) # 输出对象
魔法函数是在创建对象时调用,多数用在创建对象时要新值时使用
六、装饰器
装饰器是一种函数的函数,因为装饰器传入的参数就是一个函数,然后通过实现各种功能来对这个函数的功能进行增强。
静态属性
class Room: def __init__(self, name, ower, width, length, heigh): self.Name = name self.Ower = ower self.Width = width self.Length = length self.Heigh = heigh @property # 把一个方法变成一个数据属性 def cal_area(self): print("%s 住的%s 总面积是%s平米的地下室" % (self.Ower, self.Name, self.Width * self.Length)) r1 = Room("厕所", "北爷", 2, 2, 20000) # 实例化出来一个实例r1,实例化的过程就是执行__init__ r2 = Room("北京", "喵爷", 20, 60, 20000) r1.cal_area # 用了property这个装饰器之后,实例在调用函数属性就等于调用数据属性,不用加()就可以调用 r2.cal_area
静态方法
class Room: tag = 1 # 定义一个类的数据属性 def __init__(self, name, ower, width, length, heigh): self.Name = name self.Ower = ower self.Width = width self.Length = length self.Heigh = heigh @classmethod # 这个装饰器是专门供类使用的方法 def tell_info(cls): # cls代表类本身 print(cls) print("---", cls.tag) @staticmethod # 静态方法 叫类的工具包,不跟类绑定也不跟实例绑定 def wash_body(a, b, c): print("%s %s %s 正在洗澡" % (a, b, c)) Room.wash_body("北爷", "喵爷", "修电脑") # 用类调用washbody这个方法 r1 = Room("厕所", "北爷", 2, 2, 20000) # 实例化一个实例r1 r1.wash_body("北爷", "喵爷", "修电脑") # 用实例调用washbody这个方法
静态类
class Room: tag = 1 # 定义一个类的数据属性 def __init__(self, name, ower, width, length, heigh): self.Name = name self.Ower = ower self.Width = width self.Length = length self.Heigh = heigh @classmethod # 这个装饰器是专门供类使用的方法 def tell_info(cls): # cls代表类本身 print(cls) print("---", cls.tag) # 等价于Room.tag Room.tell_info() # 会自动把类本身传给cls
这就是面向对象的基本用法。面向对象还有(封装、继承、多态)这三个是面向对象的三大特性
这篇关于Python_面向对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Python编程基础
- 2024-11-01Python 基础教程
- 2024-11-01用Python探索可解与不可解方程的问题
- 2024-11-01Python编程入门指南
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南