面向对象编程:面向对象的开发语言,面向对象的世界一切皆对象,面向对象它是包含面向过程的
类:一类东西,一个模型
实例:通过这个模型造出来的东西,即对象
实例化:就是造实例的过程
面向对象的特性:
1、封装:就是把零散代码封装成一个函数,或者封装成一个类
2、继承:就是父类有的东西,你也有
例如:
class JxFather(object):
addr='密云'
def __init__(self,num):
self.house_num=num
def makeMoney(self):
print('ddssssd@##s')
class Jx(JxFather):#继承JxFather这个类
def dabaojian(self):
print('ewhfieeee')
class JxSon(Jx,JxFather):#同时继承多个类
pass
3、多态:一种方法多种实现
属性:就是类里面的变量,包含类变量和实例变量
1、类变量:存在类里面的,一般一些公共的东西,不会变的,用类变量
2、实例变量:实例化的时候才创建的变量
例如:
class Student(object):
country='China'#类变量,也就是公共的东西,不会变的,用类变量
def __init__(self,name):
self.name=name#实例变量,实例化的时候才创建的变量
self.sex='女'
self.addr='望京'
方法:就是类里面有什么功能,其实就是类里面的函数,类里面的函数如果有多次调用,而且还要获取到他的返回值,那就用return,如果这个变量就用了一次,那么就用self.XX=XXXX
1、类方法:通过类名可以直接调用,不需要实例化
class My(object):
country='japan'
@classmethod#类方法,通过类名可以直接调用,不需要实例化,不能用实例方法和实例变量
def ddl(cls):
print(cls.country)
My.ddl()
2、静态方法:就是写在类里面的一个普通函数而已。
@staticmethod#静态方法,一个普通函数
def myFun():
print('我就是一个普通函数')
return '现在17:03'
My.myFun()
3、实例方法:必须实例化之后才可以调用的方法,类里面的函数,如果第一个参数是self,那么就是一个实例方法
class My(object):
def __init__(self):#实例方法
self.cup='乐扣'
print('cup is %s'%self.cup)
def get_salt(self):#实例方法
print('XXX')
4、属性方法:把一个方法变成一个变量。属性方法也是一个实例方法,需要实例化才能使用。属性方法同样可以通过实例方法实现。如果你使用属性方法的话,那么必须得有返回值,而且不能有入参。
例如:
class Calc(object):
def __init__(self,a,b):
self.a=a
self.b=b
def add(self):
return self.a+self.b
@property#属性方法
def add2(self):
return self.a+self.b
res=Calc(3,5)#实例化
#调用以下两个方法结果是一样的
res.add()
res.add2
构造函数:初始化这个对象,你想让他给你传哪些东西,他会在这个类实例化的时候自动执行。
析构函数:它是在这个实例被销毁的时候自动执行的。
例如:
class YueBing(object):
def __del__(self):#析构函数,实例被销毁的时候执行
print('月饼被我吃了')
def wuren(self):
print('我是五仁月饼')#构造函数,类实例化的时候就执行的
def __init__(self):
print('造好月饼了')
私有:包括私有方法,私有变量。方法或者变量前面加上__,(两个下划线),它就是一个私有方法/私有变量。私有方法或者变量在类里面随便用,出了类就不好使。
例如:
class My(object):
__salt='$$$EEeefff343'#私有变量
def __init__(self):
self.__cup='乐扣'#私有变量,只能在类里面进行调用
print('cup is %s'%self.__cup)
def bad(self):
print('cup is %s'%self.__cup)
self.__cup='矿泉水瓶'#私有变量
print('cup is %s'%self.__cup)
def __mymoney(self):#私有方法,只能在类里面进行调用
print('我今天没有钱')
def get_salt(self):
print(self.__salt)#调用私有变量
self.__mymoney()#调用私有方法
编码命名规范:
如果是类名的话,首字母要大写,如class Students(object):
strToDict #函数名如果有多个单词的话,每个单词首字母都大写
str_to_dict#函数名使用多个单词用下划线连起来也行
实例:
import pymysql
from pymysql.cursors import DictCursor
class MyConnect():
def __init__(self, host, port, user, passwd, db, charset='utf8'):
self.__host = host#定义实例初始化的变量
self.port = port
self.user = user
self.passwd = passwd
self.db = db
self.charset = charset
self.get_cur() # 表示创建实例的时候就建立游标
def get_cur(self):
try:
self.coon = pymysql.connect(host=self.__host, user=self.user, passwd=self.passwd, db=self.db, port=self.port,
charset=self.charset)
except Exception as e:
return '数据库连接失败'
else:
self.cur = self.coon.cursor(DictCursor) # 建立游标
def select_sql(self, sql):
self.cur.execute(sql)
print(self.cur.fetchall())
return self.cur.fetchall()
# res = self.cur.fetchone()
def other_sql(self, sql):
try:
self.cur.execute(sql)
except Exception as e:
print('sql执行失败:%s' % e)
return e
else:
self.coon.commit()
def __del__(self):
self.cur.close()
self.coon.close()