面向对象基础

138 阅读3分钟

面向对象的理解

面向对象是一种将面向对象的思想应用于软件开发过程并指导开发活动的系统方法。这是一种基于“对象”概念的方法论。对象是由数据和允许的操作组成的包,它与目标实体有直接的对应关系。对象类定义了一组具有类似属性的对象。

例如:肚子饿了,想吃饭

面向过程:---去超市---买菜---卖肉---买米---回家---洗菜---切肉---炒菜---煮米饭---盛饭---开吃

面向对象:点外卖

总结:⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使⽤的,不⽤去管他内部的情况。⽽编程就是设置事物能够做什么事。

面向对象的重要组成部分:

  • 对象

类:

类是一系列具有特征和行为的事物的统称,是一个抽象概念。

类中特征即是属性,行为即是方法。

对象:

对象是类创建出来的真实存在的事物

例如:在用图纸生产手机时,图纸就是类,手机即是对象。

类是用来创建对象的。

面向对象方法:

定义类:

语法:

class 类名(): pass

注意:类名的命名要遵循标识符命名规则,同时遵循驼峰命名习惯,一般首字母大写。

例:
class First_class():
    print("创建的第一个类。")

创建对象:

语法:

变量名 = 类名()

first_class = First_class()
# 创建对象的过程也叫实例化对象。

类属性:

属性即是特征,⽐如:手机的颜色,大小,重量...

# 例:
class IPhone1():
    color = "red"
    size = "max"


phone = IPhone1()
print(Iphone.size)
print(Iphone.color)
print(phone.size)   # >>>max
print(phone.color)  # >>>red

类的实例方法:

方法即是行为,比如手机的打电话、打游戏、看视频等功能。(函数在类中叫做方法)

# 例:
class Iphone2():
    color = "red"
    size = "max"

    def play_game(self):
        print("打游戏")

    def listening(self):
        print("听音乐")

    def watch(self):
        print("看电视")


my_phone = Iphone2()
my_phone.play_game()
my_phone.watch()
my_phone.listening()

self:self代表类的实例

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

魔术方法:

在python中,名为:XX()函数的方法就是魔法方法。它是一种具有特殊功能的函数。

(魔法方法一般自动运行,不需要手动运行。)

①__init__():初始化对象

__init__() ⽅法,在创建⼀个对象时默认被调⽤,不需要⼿动调⽤

__init__(self) 中的self参数,不需要开发者传递,python解释器会⾃动把当前的对象引⽤传递过去。

# 例:
class IPhone3():
    def __init__(self):
        self.color = "red"
        self.size = "max"

    def main(self):
        print(f"手机的大小为:{self.size}")
        print(f"手机的颜色为:{self.color}")


my_phone = IPhone3()
my_phone.main()

实例属性

一般在__init__()中定义的属性为实例属性

__init__()的作用:传参
# 对类进行传参:
class Iphone4():
    def __init__(self, color, size):
        self.color = color
        self.size = size

    def my_iphone(self):
        print(f"我的手机的颜色为:{self.color}")
        print(f"我的手机的大小为:{self.size}")

    def my_friend_iphone(self):
        print(f"朋友的手机的颜色为:{self.color}")
        print(f"朋友的手机的大小为:{self.size}")


My_iphone = Iphone4("red", "x")
My_iphone.my_iphone()
My_friend_iphone = Iphone4("yellow", "plus")
My_friend_iphone.my_friend_iphone()

②__str__():

当使⽤print输出对象的时候,默认打印对象的内存地址。 如果类定义了 __str__ ⽅法,那么就会打印从在这个⽅法中 return 的数据。

例:当没有__str__()时,打印对象。
class My_iphone():
   def __init__(self):
       self.color = "red"
       self.size = "plus"


my_iphone = My_iphone()
print(my_iphone)
# >>><__main__.My_iphone object at 0x000001C36FB6FDC0>


# 当时用__str__()时;
class my_phone():
   def __init__(self):
       self.color = "black"
       self.size = "plus"

   def __str__(self):
       return f"我的手机颜色为:{self.color},大小为:{self.size}"


my_iphone = my_phone()
print(my_iphone)
# >>>我的手机颜色为:black,大小为:plus

私有属性和方法:

在Python中__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问.只能在类的内部进行访问。

# 例:
class Iphone5():
    def __init__(self):
        self.__color = "red"
        self.size = "plus"

    def __playGame(self):
        print("玩王者荣耀")
        print("玩CSGO")

    def play(self):
        print("玩游戏")


my_phone = Iphone5()
# print(my_iphone.__color)  # 报错,私有属性只能在类内部使用
print(my_iphone.size)
# my_phone.__playGame()   # 报错,私有方法只能在类内部调用
my_phone.play()