python内容笔记整理--------第四周

第二阶段-第一章

3.类和对象

class clock:
    ID=None
    price=None
    def ring(self):
        import winsound
        winsound.Beep(2000,3000)
clock1=clock()
clock.ID="006632"
clock.price=19.99
print(f"闹钟ID为{clock.ID},闹钟价格为{clock.price}")


定义他的属性,并作出相应工作

注意:定义的ring是一个函数,最后要调用才能使得发出声音,clock.ring()

面向对象编程是设计类,基于类创建对象,并使用对象来完成具体的工作。

4.构造方法(可以使得代码更加简单高校)

1._init_()方法是构造方法。

构造方法可以实现:1.在创建类对象(构造类)的时候,会自动执行。

                                2.在创建类对象(构造类)的时候。将传入参数自动传递给_init_方法使用。

2.构造方法运用示例 

class Student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
        print("Studebt类创建了一个类对象")
stu =Student("周杰伦",31,"131115955018")
print(stu.name)
print(stu.age)
print(stu.tel)

运行结果:周杰伦

                  31 

                  13111595018

注意: 成员变量的定义不写也没事,因为__init__语句会自动执行(下边赋值了)

3.构造方法的注意事项

1.构造方法的名称是__init__前后都有两个下划线

2.构造方法也是成员方法,要在参数列表中提供self关键字。

3.在构造方法内定义成员变量,需要使用self关键字

如:

def __init__(self,name,age,tel):
    self.name=name
    self.age=age
    self.tel=tel

 4.相关例题(已自己运行出结果) 

class Student:
    name = None
    age = None
    address = None

    def __init__(self, name, age, address):
        self.name = name
        self.age = age
        self.address = address

for i in range(1,11):
    print(f"当前录入第{i}位学生信息,总共需要录入10位学生信息")

    name=input("请输入学生姓名:")
    age=input("请输入学生年龄:")
    address=input("请输入学生地址:")
    stu=Student(name=name,age=age,address=address)
    print(f"学生{i}信息录入完成,信息为:[学生姓名:{stu.name},学生年龄:{stu.age},地址:{stu.address}]")

注意 :1.不知道为什么input函数在这个代码中只能输入英文而不能输入中文

            2. 此题要注意是循环第{i}位

5.其他内置方法

1.魔术方法

1.__init__构造方法(上述已总结)
2.__str__字符串方法(控制类转换为字符串的行为)
class Student:
    def __init__(self,name,age):
        self.name=None
        self.age=None
    def __str__(self):
        return f"Student类对象,name={self.name},age={self.age}"
student=Student("周杰伦",11)
print(student)

注意:未使用__str__之前输出的是内存地址。

主要是是内存地址直接转换为字符串  

3.__lt__小于,大于符号比较(严格来说用于小于符号的比较的)

直接对两个对象进行比较是不可以的,但是在类中用__lt__方法可同时完成小于符号和大于符号的比较。

class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __lt__(self,other):
        return self.age<other.age
stu1=Student("周杰伦",31)
stu2=Student("林俊杰",33)
print(stu1<stu2)
    

引用__init__可以进行比较输出结果为布尔型。 

补充:__le__用于小于等于/大于等于运算符

4.__eq__  ==符号比较(进行是否相等判断的)
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __lt__(self,other):
        return self.age<other.age
    def __eq__(self,other):
        return self.age==other.age
stu1=Student("周杰伦",31)
stu2=Student("林俊杰",33)
print(stu1<stu2)
print(stu1==stu2)

注意:若没有引入__eq__进行比较,结果为False 因为比较的是内存地址,地址肯定不一样。 

 6.封装

1.定义:将现实世界事物封装到程序内部

2.使用私有成员

1.只要在类中设计了私有的成员,获取了这个类对象就没有办法去使用这些私有的成员变量

 使用__开头

2.私有变量是无法打印的

3.私有成员对于类对象来说没有办法直接使用,但可以被其他成员(内部)使用。

例:

 3.私有成员的意义:

在类中提供仅供内部使用的属性和方法而不对外开放(类对象无法使用)

4.封装的课后练习

class phone:
     __is_5g_enale=True


     def __check_5g(self):
         if self.__is_5g_enale:
             print("5g开启")
         else:
             print("5g关闭,使用4g网络")
     def call_by_5g(self):
        self.__check_5g()
        print("正在通话中")
phone =phone()
phone.call_by_5g()

7.继承的基础语法

1.语法:

class  类名(父类名)

              类内容体

继承分为多继承和单继承

2.继承的单继承举例

class phone:
    IMEI ="天才帅涵"
    producer ="HM"
    def call_by_5g(self):
        print("4g通话")

class phone2022(phone):
    face_id="10001"

    def call_by_5g(self):
        print("2022新功能5g")
phone=phone2022()
print(phone.IMEI)

3.多继承语法及举例

1.语法:

class类名(父类1,父类2,....父类N)

               类内容体 

2.举例

class Parent1:
    def method1(self):
        print("This is method 1 from Parent1")


class Parent2:
    def method2(self):
        print("This is method 2 from Parent2")


class Child(Parent1, Parent2):
    def method3(self):
        print("This is method 3 from Child")


if __name__ == "__main__":
    child = Child()
    child.method1()
    child.method2()
    child.method3()
    

 补充:pass关键字用来补充语法,不用去以填充了,显示无内容,空的意思。

注意:多个父类中,有同名的成员,按照从左到右的先来。

 8.复写(子类继承父类后不满意,进行复写)

对谁不满意,在子类中重新定义即可)

1.例子

class phone:
    IMEI ="天才帅涵"
    producer ="HM"
    def call_by_4g(self):
        print("4g通话")
class phone111(phone):
    producer="丁泽涵"
    def call_by_4g(self):
        print("5g通话")
phone=phone111()
print(phone.producer)

2.调用父类同名成员 

 调用父类成员:使用成员变量:父类名.成员变量                            或用super().成员方法

                                                   父类名.成员方法(self)

9.类型注解

1.pycharm无法通过代码确定传入什么类型,需要类型注释

2.支持注解类型:

1.变量的类型注解

基础语法:变量:类型            例:www: int=10         stu:student =student()

也可以对列表、元组、字典等进行注解(可以简易,可以详细)。例: my_list:list=[1,2,3]tuple

函数(方法)形参列表和返回值的类型注解

注意:1.元组类型设置类型详细注释,需要将每一个元素都标记出来。

例如:my_tuple:tuple[str,int,bool]=("itheima",666,True]

2.字典类型设置类型详细注释,需要两个类型,第一个是key,第二个是value

3.也可以在代码后注释里边标记是什么类型。

4.类型注解是提示性的不是决定性的功能。

2.函数(方法)的类型注解-形参

1.语法:def 函数方法名(形参名:类型,形参名:类型,....)

def add(x:int,y:int):
    return x+y
add()              按下ctrl+p会提示输入两个整数

对返回值注解:def 函数名(形参:类型....)-> 类型:

3.Union类型联合注解(需要导包)

from typing import Union

my_list:list[union[int,str]]=[1,2,"itheima"]                #对变量的联合注解

def func(data:union[int,str]) ->union[int,str]:               #对函数形参的联合注解

     pass

10多态(使用不同对象得到不同状态)

 抽象类的作用
多用于做顶层设计(设计标准),以便子类做具体实现。
也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法
并配合多态使用,获得不同的工作状态。

第二阶段-第二章

1.SQL章节前言

任何编程语言都会用到SQL,本章只学习入门

2.数据库(存储数据)

1.SQL语言就是一种对数据库、数据进行操作、管理查询的工具

2.三个层次:库、表、数据三个组织来完成数据存储

3.Mysql安装官网(www.mysql.com) 

安装后需要配置环境变量

4.mysql的入门

1.show databases          查看数据库

2.use 数据库                  使用数据库

3.show tables                 查看数据库有哪些表

4.exit                              推出Mysql的命令行环境

5.SQL基础与DDL

SQL语言是操作数据库的专用工具

1.SQL的语法特征

SQL语言大小写不敏感,可以单行或多行书写,最后以;结束,SQL支持注释

注意:单行注释是-- 有个空格

2.DDL库管理

1.查看数据库:show databases;

2.使用数据库:use 数据库名称;

3.创建数据库:create database;

4.删除数据库:droop database 数据库名称;

5.查看当前使用的数据库:select database();

3.DDL表管理

1.查看有哪些表:show tables;

2.创建表:create table 表名称(

列名称 列类型,

列名称 列类型,

....

);

3.删除表:drop table 表名称;        /     drop table if exists 表名称

注意 :一定要看好是在哪个库进行创建的SQL !!!

6. SQL-DML相关语法 

1.数据插入

insert into 表【(列1,列2,...)】values(值1,值2....)[(值1,值2....),(值1,值2...)]

create table student(
     id int,
     name varchar(10),
     age int
);
insert  into student (id)values(1),(2),(3);
insert into  student(id,name,age) values(4,'周杰伦',31),(5,'丁泽涵',18),(6,'柳泽咸猪手',65);

运行结果:

注意:(id,name,age)可以不用写 

2.数据删除

 delete from 表名称 [where 条件判断];

delete from student where id <4;

3.数据更新

update 表名称 set 列=值[where条件判断];

update student set name='张学友'where id=5;

 注意:1.where 条件判断是去锁定哪一个位置

            2.字符串出现在SQL,必须用单引号包围起来

7.  SQL-DQL相关语法

1.基础查询语法:select 字段列表/* from 表                *代表是所有是通配符

2.过滤查询的语法:select 字段列表/* from 表 where 条件判断

select id,name,age from student;
select *from student where age>30;

3.分组聚合:


SELECT 字段|聚合函数 FROM 表 [ WHERE条件] GROUP BY 列
聚合函数有:
- SUM(列)求和
AVG(列)求平均值
MIN(列)求最小值
MAX(列)求最大值
COUNT(列|*)求数量

注意:1.一个SQL中可以有多个分组聚合

2.group by 中出现了哪个列,哪个列才能出现在select中的非聚合中。

select id ,name,avg(age) from student group by name;

id是多余的

4. 对查询结果排序(order by 是用来排序的)

select *from student where age>20 order by age  asc;
-- asc是升序/desc是降序

对查询结果进行数量限制或者分页显示:

SELECT 列|聚合函数|* FROM 表
WHERE ...
GROUP BY...
ORDER BY... [ASC | DESC]

LIMIT n[, m]          这是表示从第n个元开始,向后去取m个元素

8.python操作MYSQL 

1.在pycharm中创建MYSQL表

from pymysql import Connection
conn=Connection (
    host="localhost",
    port=3306,
    user="root",
    password="123456dzh9080"
)
print(conn.get_server_info())

cursor=conn.cursor()     #获取游标对象
conn.select_db("test") #选择数据库
cursor.execute("create table test_pymysql (id INT);")
conn.commit()
conn.close()

2.获取链接对象

from pymysql import Connection   导包

Connection(主机、端口、账户、密码)即可得到链接对象

链接对象.close()关闭和MYSQL数据库的连接

3.执行SQL查询

游标对象.exexute()执行SQL语句

4.数据插入

通过代码去确认这种更改行为

链接对象.commit()              手动确认

autocommit=True                设置自动提交   在构建链接对象时插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值