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_面向对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程