当前位置:   article > 正文

Python面向对象

Python面向对象

1 初识对象

在这里插入图片描述

class Student:
    name = None
    gender = None
    nationality = None
    native_place = None
    age = None

stu_1 = Student()

stu_1.name = '小明'
stu_1.gender = '男'
stu_1.nationality = '中国'
stu_1.native_place = '河南省'
stu_1.age =18

print(stu_1.name)
print(stu_1.gender)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2 成员方法

2.1 类的定义和使用

在这里插入图片描述

2.2 成员方法的使用

在这里插入图片描述

2.3 self关键字的作用

在这里插入图片描述
在这里插入图片描述

class Student:
    name = None

    def say_hi(self):
        print("Hello,{}".format(self.name))

    def say_hello(self,msg):
        print(f"Hello,我是:{self.name},{msg}")

stu = Student()
stu.name = '小明'
stu.say_hello("你好")

stu2 = Student()
stu2.name = '小白'
stu2.say_hi()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3 类和对象

3.1 现实世界的事物和类

在这里插入图片描述
在这里插入图片描述

3.2 类和对象

在这里插入图片描述

3.3 什么是面向对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Clock:
    id = None
    price = None

    def ring(self):
        import winsound
        winsound.Beep(2000,3000) #请关小音量,声音很大

clock1 = Clock()
clock1.id = "003032"
clock1.price = 18.8
print(clock1.id,clock1.price)
clock1.ring()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4 构造方法

在这里插入图片描述
在这里插入图片描述

class Student:
    name = None
    age = None
    tel = None

    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel
        print("Student object")

s1 = Student("xiaoming", 20, "555555")
print(s1.name)
print(s1.age)
print(s1.tel)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

5 其他内置方法

在这里插入图片描述

5.1 字符串方法

在这里插入图片描述

class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'{self.name} is {self.age} years'

s = Student('小明',66)
print(s)
print(str(s))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.2 __lt__小于符号比较方法

在这里插入图片描述

class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    # __str__魔术方法
    def __str__(self):
        return f'{self.name} is {self.age} years'

    # __lt__魔术方法
    def __lt__(self, other):
        return self.age < other.age

s1 = Student('小明',66)
s2 = Student('小白',55)
print(s1 < s2)
print(s1 > s2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

5.3 __le__小于等于比较符号方法

在这里插入图片描述

class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    # __str__魔术方法
    def __str__(self):
        return f'{self.name} is {self.age} years'

    # __lt__魔术方法
    def __lt__(self, other):
        return self.age < other.age
    # __le__魔术方法
    def __le__(self, other):
        return self.age < other.age

s1 = Student('小明',66)
s2 = Student('小白',55)
print(s1 <= s2)
print(s1 >= s2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

5.4 __eq__比较预算符实现方法

在这里插入图片描述

class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    # __str__魔术方法
    def __str__(self):
        return f'{self.name} is {self.age} years'

    # __lt__魔术方法
    def __lt__(self, other):

        return self.age < other.age
    # __le__魔术方法
    def __le__(self, other):
        return self.age < other.age

    # __eq__魔术方法
    def __eq__(self, other):
        return self.age == other.age

s1 = Student('小明',66)
s2 = Student('小白',66)
print(s1 == s2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

6 封装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Phone:
    __current_voltage = 1

    def __keep_single_core(self):
        print("cpu单核运行")

    def call(self):
        if self.__current_voltage >= 1:
            print("yes")
        else:
            self.__keep_single_core()
            print("no")

phone = Phone()
phone.call()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

案例

在这里插入图片描述

class Phone:
    __is_5g_enable = False

    def __check_5g_enable(self):
        if self.__is_5g_enable:
            print("yes")
        else:
            print("no")

    def call_by_5g(self):
        self.__check_5g_enable()
        print("正在通话中")

phone = Phone()
phone.call_by_5g()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

7 继承

7.1 继承的基础语法

7.1.1 单继承

在这里插入图片描述

class Phone:
    IMET = None
    producer = "HH"
    def call_by_4G(self):
        print("4g通话")

class Phone2(Phone):
    face_id = '10001'

    def call_by_5G(self):
        print("5g通话")

phone = Phone2()
phone.call_by_4G()
phone.call_by_5G()
print(phone.producer)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

7.1.2 多继承

在这里插入图片描述

class Phone:
    IMET = None
    producer = "HH"
    def call_by_4G(self):
        print("4g通话")
        class NFCReader:
    nfc_type = '第五代'
    producer = 'HH'

    def read_card(self):
        print("NFC读卡")

    def write_card(self):
        print("NFC写卡")

class RemoteControl:
    rc_type = '红外遥控'

    def control(self):
        print("红外")

class MyPhone(Phone, RemoteControl, NFCReader):
    pass

my_phone = MyPhone()
my_phone.call_by_4G()
my_phone.write_card()
my_phone.control()
my_phone.read_card()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

在这里插入图片描述

7.2 复写和使用父类成员

在这里插入图片描述

class Phone:
    IMET = None
    producer = "itcast"

    def call_by_5G(self):
        print("5g通话")

class Phone2(Phone):
    producer = "HH"

    def call_by_5G(self):
        print("省电模式")

phone = Phone2()
print(phone.producer)
phone.call_by_5G()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

8 类型注解

8.1 变量的类型注解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.2 函数(方法)的类型注解

在这里插入图片描述

def add(x: int, y: int):
    return x + y
add1 = add(1, 2)
print(add1)
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

def func(date:list) -> list:
    return date
  • 1
  • 2

8.3 Union类型

在这里插入图片描述
在这里插入图片描述

9 多态

在这里插入图片描述

在这里插入图片描述

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")

def make_noise(animal:Animal):
    animal.speak()

dog = Dog()
make_noise(dog)
cat = Cat()
make_noise(cat)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述

class AC:
    def cool_wind(self):
        pass

    def hot_wind(self):
        pass

    def swing_l_r(self):
        pass

class Midea_AC(AC):
    def hot_wind(self):
        print("Midea制热")

    def swing_l_r(self):
        print("Midea左右摆风")

    def cool_wind(self):
        print("Midea制冷")

class Gre(AC):
    def hot_wind(self):
        print("Gre制热")

    def swing_l_r(self):
        print("Gre左右摆风")

    def cool_wind(self):
        print("Gre制冷")

def make_cool(ac:AC):
    ac.hot_wind()

midea = Midea_AC()
make_cool(midea)
gre = Gre()
make_cool(gre)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/698708
推荐阅读
相关标签
  

闽ICP备14008679号