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)

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()

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()

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)

在这里插入图片描述

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))

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)

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)

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)

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()

案例

在这里插入图片描述

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()

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)

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()

在这里插入图片描述

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()

在这里插入图片描述

8 类型注解

8.1 变量的类型注解

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

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

在这里插入图片描述

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

在这里插入图片描述

def func(date:list) -> list:
    return date

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)

在这里插入图片描述

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值