知识补充之面向对象魔法方法及mysql等相关内容
# 1 seo sem
百度搜索充钱可以靠前的是sem
不充钱靠前的seo
谷歌,必应国际版
百度搜不到,搜出来的10篇文章9篇一毛一样,碰到一个问题,怎么解决,知乎(2个),思否(1个),csdn(没有)
1 init和new区别?
造出一个空对象,__new__干的
把属性放入对象中,__init__干的事
# class Car:
# pass
#
# class Foo():
#
# def __new__(cls, *args, **kwargs):
# obj=Car()
# return obj
#
# def __init__(self, name):
# self.name = name
# print('我是init')
#
#
# f=Foo('lqz')
# print(f.name)
2__ setattr__ __getattr
__
# 1 __ setattr__的使用
# 2 递归现象的出现
-通过反射赋值 setattr(obj,key,value)
-self.key=value
# 3 避免递归
-self.__dict__[key] = value
-object.__setattr__(self,key,value)
# 4 object.__setattr__(f,'_Foo__size',178)的使用
# 5 __getattr__
-对象.属性 取值属性不存在就会触发它的执行
# 6 应用场景(字典只支持中括号取值和赋值,让它支持 . 取值和赋值)
3 __setitem__
和__getitem__
# 对象[]取值赋值会触发它的指向
# 不继承字典,还支持[]赋值取值
class Foo:
def __setitem__(self, key, value):
setattr(self, key, value)
# object.__setattr__(self,key,value)
def __getitem__(self, item):
return getattr(self, item)
f = Foo()
f.name = 'lqz'
print(f.name)
print(f['name'])
f['age'] = 19
print(f.age)
print(f['age'])
4 __slots__
class A:
__slots__ = ['name', 'age']
a1 = A()
# print(a1.__dict__) # AttributeError: 'A' object has no attribute '__dict__'
a1.name = '张三'
a1.age = 24
print(a1.age)
# a1.hobby = '泡妞' # AttributeError: 'A' object has no attribute 'hobby'
a1.size=179
print(a1.__slots__)
5 __call__
# __call__
class Foo():
def __call__(self, *args, **kwargs):
print('我被执行了')
# Foo() 会触发元类的 __call__方法
f = Foo()
f()
6 __doc__
class A:
"""我是A类的描述信息啊手动阀手动阀"""
pass
print(A.__doc__)
7 __eq__
## 对象 == 比较时触发执行
class A:
def __init__(self,x,y):
self.x = x
self.y = y
def __eq__(self,obj):
# 打印出比较的第二个对象的x值
print(obj.x)
if self.x +self.y == obj.x+obj.y:
return True
else:
return False
a = A(1,2)
b = A(2,2)
print(a == b)
8 type 和object 的关系
# type 类,继承object,是所有类的类,包括自己 # object类:谁都没继承,它是由type实例化得到的,是所有类的父类,包括type
数据库相关
1 mysql版本选择
5.5 :企业基本不用了 5.6 :****:四星 5.6.36 5.6.38 5.6.40 ...5.6.46 5.7 :*****:五星 5.7.20 5.7.22 ....5.7.28 5.7.30(5.7版本最新) 8.0(最新) :**:两星 8.0.11 开始,之前都是测试版 ...8.0.20
2 MySQL分支版本
# 去ioe:ibm,oracle,emc # PostgreSQL,oracle,mysql # 分支 Oracle: MySQL官方版 红帽 : MariaDB:红帽维护的分支 Percona: PerconaDB:Percona公司维护的分支 # 版本 企业版:收费 社区版:开源免费 # linux内核,GPL开源协议,红帽 centos
3 mysql 架构
客户端启动:mysql -uroot -p123456 -P 3306 -h 127.0.0.1 -cmd窗口下执行 -tcp协议 -navicat -pymysql(用python写的符合他们通信协议的客户端) 服务端启动:mysqld 加载了配置文件(找了一些路径)
4 一条SQL语句的执行过程
连接层 sql层 DDL :数据定义语言 DCL :数据控制语言 DML :数据操作语言 DQL: 数据查询语言 存储引擎层
5 varchar类型
varchar最多能存储65535个字节的数据 varchar(255)