从零开始的python学习生活2

接上封装

python 复制代码
class Phone:
    __volt=0.5

    def __keepsinglecore(self):
        print("让cpu以单核运行")

    def if5G(self):
        if self.__volt>=1:
            print("5G通话已开启")
        else:
            self.__keepsinglecore()
            print("电量不足,无法使用5G通话,已经设置为单核运行来省电")

phone=Phone()
phone.if5G()

私有的成员变量和方法我们外部是无法使用的,但是内部的其他成员方法是可以使用的

练习题

python 复制代码
class Phone:
    __is_5g_enable=False

    def __check_5g(self):
        if self.__is_5g_enable==True:
            print("5g开启")
        else:
            print("5g关闭,使用4g网络")

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

phone=Phone()
phone.call_by_5g()

继承


我们虽然新开发了面部识别功能,但是我们还是会继承之前已经有的功能

python 复制代码
class Phone:
    id=None
    producer="可是雪"

    def call_by_4g(self):
        print("4g通话")


class Phone2024(Phone):
    face_id="10001"

    def call_by_5g(self):
        print("2024年新功能,5g通话")



phone=Phone2024()
phone.call_by_5g()
phone.call_by_4g()
print(phone.producer)

继承的类的方法和变量都可以用

下面代码里面说了pass

我们这个类已经继承了很多类了,不需要再添加别的东西了,所以我们就可以直接写一个pass

python 复制代码
class Phone:
    id=None
    producer="可是雪"

    def call_by_4g(self):
        print("4g通话")


class Phone2024(Phone):
    face_id="10001"

    def call_by_5g(self):
        print("2024年新功能,5g通话")



phone=Phone2024()
phone.call_by_5g()
phone.call_by_4g()
print(phone.producer)

class NFC:
    nfc_type="第五代"
    producer="可是雪"

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

class RemoteControl:
    rc_type="红外遥控"
    def control(self):
        print("红外遥控开启了")

class MyPhone(Phone2024,NFC,RemoteControl):
    pass
phone=MyPhone()
phone.call_by_4g()
phone.call_by_5g()
phone.read_card()
phone.write_card()
phone.control()

这里面能很清楚的看见,我们直接继承了Phone2024的,但是我们依旧可以使用phone里面的功能,也就是继承具有连续性

假如里面有多个属性,比如调用producer,class Phone里面也有,类NFC里面也有,此时谁比较靠左边就是谁

复写父类

我继承过来的属性和方法我都不满意,我就直接改

python 复制代码
class Phone:
    id=None
    producer="可是雪"

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

class MyPhone(Phone):
    producer = "不是雪"
    def call_by_5g(self):
        print("开启单核模式,确保省电")
        print("使用5g网络进行通话")
        print("关闭单核模式,确保性能")

phone=MyPhone()
phone.call_by_5g()
print(phone.producer)

子类把父类覆盖掉

下面:

假如我已经把父类里面的东西复写掉了,但是我还想用父类的某些变量和方法,那么我可以使用下面两种方法

python 复制代码
class Phone:
    id=None
    producer="可是雪"

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

class MyPhone(Phone):
    producer = "不是雪"
    def call_by_5g(self):
        print("开启单核模式,确保省电")
        # print("使用5g网络进行通话")
        
        # 方式一
        print(f"父类的厂商是{Phone.producer}")
        Phone.call_by_5g(self)
        # 方式二
        print(f"父类的厂商是{super().producer}")
        super().call_by_5g()
        
        print("关闭单核模式,确保性能")

phone=MyPhone()
phone.call_by_5g()
print(phone.producer)

应该比较喜欢super方法,方法一忘记传self还会报错

变量的类型注解





python 复制代码
import json
import random

var_1:int=10
var_2:str="hello"
var_3:bool=True
class Student:
    pass
stu:Student=Student()

my_list:list[int]=[1,2,3,4]
my_tuple:tuple[int,str,bool]=(1,"itheima",True)
my_set:set[str,int]={"hahaha",4}
my_dict:dict={"a":1,"b":2}

var_1=random.randint(1,10) #type:int
var_2=json.loads({"name":"zhangsan"})  #type:dict[str,str]

没逝,我以后大概率不干这行,这种备注感觉不进公司没啥用

函数和方法类型注解


python 复制代码
# 对形参进行类型注解
def add(x:int, y:int):
    return x + y
# 对返回值进行类型注解
def func(data:list) ->list:
    return data

print(func(1))
print(add(1,2))

Union联合类型注解

不是一一对应,只需要把后面出现的类型都列举出来就行

多态


python 复制代码
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()
# 不用注解
# def make_noise(Animal):
#     animal = Animal()
#     animal.speak()
dag=Dog()
cat=Cat()
make_noise(cat)
make_noise(dag)



python 复制代码
class AC:
    def cool_wind(self):
        # 制冷
        pass
    def hot_wind(self):
        # 制热
        pass
    def swing_l_r(self):
        # 左右摆风
        pass

class meidi(AC):
    def cool_wind(self):
        print("美的空调制冷")
    def hot_wind(self):
        print("美的空调制热")
    def swing_l_r(self):
        print("美的空调左右摆风")

class geli(AC):
    def cool_wind(self):
        print("格力空调制冷")
    def hot_wind(self):
        print("格力空调制热")
    def swing_l_r(self):
        print("格力空调左右摆风")

meidi = meidi()
meidi.cool_wind()
geli = geli()
geli.cool_wind()

类似于我给一个猜想,但是让其他人去做

数据分析综合案例

我有畏难心理,我先害怕了

果然,都明白但是自己就是不会敲,占个位

明儿在写

SQL

相关推荐
ch62312 分钟前
《AI 辅助编程实战:从零跑通一个 Excel 报表生成脚本的踩坑与复盘》
人工智能·python
import_random43 分钟前
[python]conda和pip(区别和联系2)
python
派大鑫wink1 小时前
纯前端实现软考中级·软件设计师备考学习网站
前端·学习
Aurorar0rua1 小时前
CS50 x 2024 Notes Python - 01
开发语言·python·学习方法
用户6602676118791 小时前
备注接口返回成功,数据库却没变:怎样限定一次修复的范围?
python
smartpi_ai1 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
Dumbness1 小时前
用 Python + UI Automation 读写微信 PC 版:一个群消息自动回复程序的实现与踩坑
python
艺杯羹2 小时前
Windows跨平台编码地雷全解:从GBK静默崩溃到内核级原子写入防御
人工智能·python·桌面客户端
用户8356290780512 小时前
使用 Python 在 Excel 中识别并高亮重复数据与唯一数据
后端·python
CCblandy2 小时前
Agent 工具调用怎么编排?本机实测:并行只到 2.63 倍,慢的先发省 30ms,CPU 活加 worker 无效
人工智能·后端·python·性能优化