day9 类

笔记:

面向对象
1.类
2.怎么发邮件
编码规范:
命名规范
strToDict 如果有多个单词,每个单词首字母大写
如果是类命令的话,首字母要大写
str_to_dict 多个单词用下划线也行
面向对象
面向过程
面向对象是包含面向过程
1.类 一个模型
2.实例 通过这个模型造出来的东西
3.对象 实例
4.实例化 就是造实例的过程

封装,继承,多态 称为面向对象的特性
封装 就是把零散的代码封装成一个类
继承 就是父类有的东西你也有
多态 一种方法多种实现
属性:就是类里面的变量
方法:就是类里面有什么功能,其实就是类里面的属性或者成为函数
构造函数
初始化这个对象
他会在这个类实例化的时候自动执行
析构函数
他是在这个实例被销毁的时候执行的
类里面函数有多次调用,而且还要获取到他的返回值,那就用return
如果这个变量就用一次,那么就用self。多次就用return
类变量
存在类里面的,一般用一些公共的东西,不会变的是类变量
实例变量
实例化的时候才创建的变量
实例方法
必须实例化之后才能调用的方法
类里面的的函数,如果有一个self,那么就是实例方法
属性方法,把实例化方法变成一个变量
@property#相当于直接调用,把方法当成变量
def myfunc(self):
return '现在是17:30'
属性方法也是实例方法,需要实例化才能实现
属性方法同样可以通过实例化实现
如果你使用属性方法必须有返回值,而且不能入参
私有
私有属性,变量
私有方法,函数
只要方法或者变量,在前面加上__,(两个下划线),他就是一个私有方法/私有变量
私有方法或者变量在类里随便使用,出了就不好使
类方法
可以通过类名进行调用
静态方法
就是写在类里面的普通函数而已

面向对象
class Student:#经典类
    pass
class BuyCar(object):#新式类
    addr = '昌平区xxx'#类变量
    def fourS(self):
        print('这里是4s店,要买车')
    def dsj(self):
        print('这里交购置税')
    def cgs(self):
        print('车管所')
    def jgj(self):
        print('交管局')
jxmc = BuyCar()#类名加括号就是实例化。
# jxmc就是一个实例,对象
class Person(object):
    def __init__(self,name,sex):
        print('名字是%s'%name)
        print('性别是%s'%sex)
    def cry(self):
        print('哭')
# xiaohei = Person('小黑','男')
# xiaohei.cry()
class YueBing(object):
    def __del__(self):#析构函数
        print('月饼被吃了')
    def wuren(self):
        print('五仁月饼')
    def __init__(self):
        print('造好月饼了')
# gxyb = YueBing()#造月饼
# gxyb.wuren()
# del gxyb
# print('这里才是最后一行')
class Car(object):
    def __init__(self,color,pl):
        self.color = color
        self.pl = pl
        self.run()
    def run(self):
        print('汽车的颜色是%s:排量是%s'%(self.color,self.pl))
        print('汽车跑了')
        self.jiayou()
    def jiayou(self):
        print('加油')
my_car = Car('read','3.5T')
#self代表的就是本类对象
#self代表的是实例化之后的对象,通过self可以随便调用下面的类和函数,self只能在类里面调用

class Cat(object):
    def __init__(self,name):
        self.name = name
    def cry(self):
        print(''%self.name)
xiaohei = Cat('jarry')

编码规则
def md5_passwd(str):
    import hashlib
    md = hashlib.md5()#构造一个MD5
    md.update(str.encode())
    res = md.hexdigest()
    return res
vedin='1709'
from urllib import parse
def sign(data,vendorld):
    first_md5 = md5_passwd(vendorld)
    second_md5 = md5_passwd(data)
    urlDecodeStr = parse.unquote(data)
    beforeMD5 = urlDecodeStr+second_md5
    res = md5_passwd(beforeMD5)
    print('加密完',res)
    return res
sign = 'vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20'

继承
class JxFather(object):
    addr = '密云'
    def __init__(self,num):
        self.hose_num = num
    def makeMoney(self):
        print('jfksdljfklsdjgfdjflgjdflg,秘密')
class jx(JxFather):
    def __init__(self):
        self.name = 'wjx'
    def dabaojian(self):
        print('拔出大保健')
class JxSon(jx,JxFather):#多继承
    pass
wds = JxSon('80')
print(wds.makeMoney())
print(wds.dabaojian())

类改写签名规则
from hashlib import md5
from urllib.parse import unquote
class DglSign(object):
    def __init__(self,venderId,data):
        self.dgl = venderId
        self.wyf = data
        self.get_vendorId()
        self.data_encode()
    def my_md5(self,str):
        md = md5()
        md.update(str.encode())
        return md.hexdigest()
    def get_vendorId(self):
        first = self.my_md5(self.dgl)
        self.Astr = self.my_md5(first)
    def data_encode(self):
        self.urlDecodeStr = unquote(self.wyf)
    def get_sign(self):
        src = self.Astr+self.urlDecodeStr
        sign = self.my_md5(src)
        return sign
mysign = DglSign('1697',"vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20-29;7C-67-A2-9A-06-05;7C-67-A2-9A-06-06;7C-67-A2-9A-06-09;00-00-00-00-00-0000E0")
res = mysign.get_sign()
print(res)

类变量和实例变量
class Student(object):
    country = 'china'#叫类变量,也是公共的
    def __init__(self):
        self.name = 'xx'
        self.addr = '望京'
        self.sex = '男'
        print('%s的国籍是%s'%(self.name,self.country))
# lanxia  = Student('jmy')
# print(lanxia.sex)
# lanxia.sex = '未知'
# print(lanxia.sex)
sur = Student()
print(sur.name())

私有变量
class My(object):
    def __init__(self):
        self.__cup = '乐知'#变量里面加上两个下划线就是私有变量
        print('cup is %s'%self.__cup)
    def bad(self):
        print('[%s]坏掉了'%self.__cup)
        self.__cup = '矿泉水瓶'
        print('[%s]坏掉了'% self.__cup)
    def get_salt(self):
        self.__my_money()
        # print(self._salt)
    def __my_money(self):
        print('我今天带了80块钱')
my = My()
my.__cup = 'hahaha'
print(my.__cup)
print(my.bad())


属性方法
class Cale(object):
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def add(self):
        return self.a + self.b
    @property#必须有return值
    def add2(self):
        return self.a + self.b
c = Cale(1,2)
r = c.add()
print(r)
print(c.add2)


各种方法
class My(object):
    country = 'china'  # 叫类变量,也是公共的
    def __init__(self):
        self.__cup = '乐知'#变量里面加上两个下划线就是私有变量
        print('cup is %s'%self.__cup)
    def bad(self):
        print('[%s]坏掉了'%self.__cup)
        self.__cup = '矿泉水瓶'
        print('[%s]坏掉了'% self.__cup)
    def get_salt(self):
        self.__my_money()
        print(self.__salt)
    def __my_money(self):
        print('我今天带了80块钱')
    @classmethod
    def ddl(cls):#类方法,通过类名可以调用
        print(cls.country)
    @staticmethod#静态方法
    def myFunc():
        return '现在是17:30'
    @property#相当于直接调用,把方法当成变量
    def myfunc(self):
        return '现在是17:30'
ax = My()
print(ax.myfunc)


练习
import pymysql
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, port=self.port, user=self.user, passwd=self.passwd,
                           charset=self.charset, db=self.db)
       except Exception as e:
           print(e)
           return '数据库连接失败'%e
       else:
           self.cur = self.coon.cursor()#建立由表
    def select_sql(self,sql):#select语句不需要commit
        self.cur.execute(sql)
        return self.cur.fetchall()
    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()
my = MyConnect(host='211.149.218.16',port=3306,user='jxz',passwd='123456',db='jxz')
res = my.select_sql('select * from jxz_stu limit10;')
my.other_sql("insert into jxz_stu values ('wjx','123交','223交','223交');")
res2 = my.select_sql('select * from jxz_stu where name="高光远"')
print(res)
print(res2)






posted @ 2017-11-29 21:38  *西西*  阅读(79)  评论(0编辑  收藏  举报