面向对象编程:把以前你写的那些函数封装到一个类里面
类:定义类的时候,类名的首字母都大写,用类的话,必须得先实例化
构造函数:类被实例化的时候,它会自动的执行构造函数。
属性:类里面的变量
方法:类里面的函数。
self代表的是本类对象。
实例就是对象,实例变量和类变量
私有函数
私有变量
只能在类里面使用,出了类就不能用了。
继承
父类有的功能、变量子类全有。
如果定义的类,有很多重复功能的,那就可以把这些重复的类,定义成父类
封装
多态 python不支持多态
一种方法多种实现。
实例方法,必须得实例化后才可以调用
属性方法 你看上去好像是一个属性,其实是一个函数,也得实例化才能调用
类方法
不需要实例化就能直接用的,它可以使用类变量和类方法。
#类方法,也不需要实例化,直接就能用。它静态方法高级一点
#它可以使用类变量和类方法。
静态方法
不需要实例化就能直接用的,其实和类没有什么关系,就是一个普通的函数
写在了类里面而已,也用不了self的那些东西,也调用不类里面的其他函数。
修改父类的构造函数
class Car():#模型,模板
def __del__(self):
#析构函数,这个实例被销毁的执行的。
print(‘over..‘)
def my_self(self):
print(
‘我是一个汽车 我的颜色是【%s】,我有【%s】个窗户‘%(self.color,self.window)
)
self.price = 10002
def run(self):
print(self.color)
print(self.window)
print(self.price)
print(‘汽车在跑。。。‘)
def __init__(self,color,window):
#
#构造函数,是类在初始化的时候会执行它
#如果你的类在实例化的时候要传入一些参数,那么你就要在__init__这个函数里写参数了
self.color = color #绑定属性
self.window = window
print(‘执行我了。。‘)
#把模型做成实际的一个汽车,这个过程叫做实例化。
bus = Car(‘黄色‘,‘3开门‘) #实例化
bus2 = Car(‘黑色‘,‘4开门‘) #实例化
bus3 = Car(‘粉色‘,‘2开门‘) #实例化
bus.my_self() #
bus2.my_self()
bus3.my_self()
#实例就是指具体造出来的东西,通过类实例化处理的东西,就是实例
#对象,就是实例
操作数据库(封装一个mysql的类)
import pymysql
class OpMySql1: #经典类
pass
class OpMySql(object):#新式类
def __init__(self,host,user,password,db,port=3306,charset=‘utf8‘):
schema = {
‘user‘:user,
‘host‘:host,
‘password‘:password,
‘db‘:db,
‘port‘:port,
‘charset‘:charset
}
try:
self.coon = pymysql.connect(**schema)
except Exception as e:
print(‘数据库连接异常!%s‘%e)
quit(‘数据库连接异常!%s‘%e)
else:#没有出异常的情况下,建立游标
self.cur = self.coon.cursor(cursor=pymysql.cursors.DictCursor)
def execute(self,sql):
try:
self.cur.execute(sql)
except Exception as e:
print(‘sql有错误%s‘%e)
return e
if sql[:6].upper()==‘SELECT‘:
return self.cur.fetchall()
else:#其他sql语句的话
self.coon.commit()
return ‘ok‘
def __del__(self):
self.cur.close()
self.coon.close()
ybq = OpMySql(‘211.149.218.16‘,‘jxz‘,‘123456‘,db=‘jxz‘) #实例化
print(ybq.execute(‘select * from stu;‘))
print(ybq.execute(‘select * from stu;‘))
print(ybq.execute(‘select * from stu;‘))
self总结
class My():
def __init__(self,name):
self.name = name
self.cry()
def cry(self): #实例方法,必须得实例化后才可以调用
print(‘%s在哭。。。‘%self.name)
def learn(self):
self.skill = [‘开车‘]
def my_self(self):
print(‘我的名字【%s】 我会%s‘%(self.name,self.skill))
wsl = My(‘王思磊‘) # self = wsl
wsl.skill = ‘浪‘
wsl.learn()
wsl.skill.append(‘浪‘)
wsl.skill.append(‘骚‘)
wsl.skill.append(‘贱‘)
wsl.my_self()
wsl.learn()
wsl.my_self()
实例变量
class Person(object):
country = ‘China‘ #类变量
def __init__(self,name,age,sex):
self.name = name #实例变量,必须实例化之后才能用,成员变量
self.age = age
self.sex = sex
def say_my_country(self):
print(self.country)
#print(Person.country)
# dsx = Person(‘大师兄‘,23,‘男‘)
# print(dsx.name)
# print(dsx.age)
# print(dsx.sex)
# print(dsx.country)
# ybq = Person(‘原宝青‘,28,‘男‘)