知识补充之面向对象魔法方法及mysql等相关内容

# 1 seo sem
百度搜索充钱可以靠前的是sem
不充钱靠前的seo
谷歌,必应国际版
百度搜不到,搜出来的10篇文章9篇一毛一样,碰到一个问题,怎么解决,知乎(2个),思否(1个),csdn(没有)

面向对象相关

1 initnew区别?


造出一个空对象,__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)  
原文地址:https://www.cnblogs.com/usherwang/p/13635648.html