面向对象编程self的含义,析构函数,数据库类练习
Posted 测试的自我放逐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程self的含义,析构函数,数据库类练习相关的知识,希望对你有一定的参考价值。
1.类的联系使用
class Baby():
country = ‘China‘ #类变量,公共的变量,每个实例都可以用 对于公共的东西可以定义节省内存
def my(self):
self.name = ‘牛寒阳‘ #name 是属性 是本类对象。
def cry(self): # 实例方法
print(‘哇哇哇‘)
@property
def hhh(self):
return 198
@classmethod
def xm(cls):#cls代表的就是baby
print(cls.country)
print(‘我是类方法‘)
@staticmethod
def xh():
print(‘这个是静态方法,它和一个没写在类里面的函数一样‘)
****
self代表的是本类对象。
因为函数里面的变量都是局部变量,出了函数就不能用了。
用self给对象绑定了之后,就可以self.xx随便用了
****
#1、不实例化,直接用类名调用这个xm的方法
#2、实例化之后,在通过实例化之后的对象调用xm方法,看看可以不 实例化会传递内存地址给类,所以通过不同的内存地址取得不同实例的值(self就是指内存地址本身)
#你不想实例化的时候,就可以定义成类方法
#静态方法就是一个普通函数,只不过是写在类里面而已,它用不了类变量、类方法、实例变量、实例方法
# Baby.xh()
# Baby.country=‘USA‘ #类变量是可以直接通过类名.xxx来进行修改的。
#
# dcg = Baby()
# # dcg.country = ‘Japan‘
# print(dcg.country)
# yjt = Baby()
# print(yjt.country)
# b = Baby()
# print(b.hhh)
# dcg = Baby(‘春光‘)
# print(‘董春光的内存的‘,id(dcg)) **self的内存地址和改内存地址一样。
# zll = Baby(‘张流量‘)
# print(‘董春光的内存的‘,id(zll)) **self的内存地址和改内存地址一样
2.利用类来改写数据库连接
import pymysql
class MyDb(object):
def __del__(self):
#析构函数 结束时执行
self.cur.close()
self.coon.close()
print(‘over...‘)
def __init__(self,
host,user,passwd,db,
port=3306,charset=‘utf8‘):
try:
self.coon = pymysql.connect(
host=host,user=user,passwd=passwd,port=port,charset=charset,db=db,
autocommit=True,#自动提交
)
except Exception as e:
print(‘数据库连接失败!%s‘%e)
else:
self.cur = self.coon.cursor(cursor=pymysql.cursors.DictCursor) #这样返回的就是字典
def ex_sql(self,sql):
try:
self.cur.execute(sql)
except Exception as e:
print(‘sql语句有问题,%s‘%sql)
else:
self.res = self.cur.fetchall()
return self.res
###
析构函数
def __del__():
pass
实例被销毁的时候执行的。
######
my = MyDb(‘118.24.3.40‘,‘jxz‘,‘123456‘,‘jxz‘)
my.ex_sql(‘select * from stu;‘)
print(my.res)
print(‘我是最后一行代码了。。。‘) #这里才会执行析构函数。 析构函数实在实例被销毁的时候执行。
以上是关于面向对象编程self的含义,析构函数,数据库类练习的主要内容,如果未能解决你的问题,请参考以下文章
Python面向对象编程(类编程)中self的含义详解(简单明了直击本质的解释)