1. 程式人生 > 實用技巧 >知識補充之面向物件魔法方法及mysql等相關內容

知識補充之面向物件魔法方法及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)