活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
目录
一、修改查看私有属性
class Test(object):
def __init__(self, name):
self.__name = name
a = Test("laowang")
print(a._Test__name) # laowang
结论:
定义类的时候如果有私有属性解释器会把名字改了即加上了_类名__变量名
补充:
实例对象.__dict__ 检查实例对象里面的所有属性
类.__dict__ 检查类的所有属性
二、对于try相关的一些东西
try:
xxxxx
except xxx:
如果有异常但是没有捕获该类型直接报错
except xxx:
xxxx
except:
pass直接捕获所有异常
else:
没有异常执行
finally:
不管有没有异常都要执行
三、类对象、实例对象、类方法、类属性、实例属性
1.区分实例属性和类属性
对于python而言所有的都是对象
一个类即一个模板也是一个对象,有自己的空间
类对象只有一个,而实例对象有多个,类属性是公有的只有一份
所以独有的放在实例属性里面,公有的放在类属性里面
class Province(object):
# 类属性
country = '中国'
def __init__(self, name):
# 实例属性
self.name = name
# 创建一个实例对象
obj = Province('山东省')
# 直接访问实例属性
print(obj.name)
# 直接访问类属性---->Province.country
当创建一个实例对象时
1.调用__new__--->创建对象,通俗点就是有一个内存空间
2.__init__----->对刚刚申请的空间进行初始化
3.把内存空间的引用传递给self
4.self.name---->指向self的内存空间
【实例属性需要通过对象来访问】【类属性通过类访问】,在使用上可以看出实例属性和类属性的归属是不同的。
- 类属性在内存中只保存一份
- 实例属性在每个对象中都要保存一份
2.区分实例方法和类方法、静态方法
- 实例方法:由对象调用;至少一个self参数;执行实例方法时,自动将调用该方法的对象赋值给self;
- 类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类赋值给cls;
- 静态方法:由类调用;无默认参数;
class Foo(object):
def __init__(self, name):
self.name = name
def ord_func(self):
# 定义实例方法,至少有一个self参数,自动传入实例对象的引用
# print(self.name)
print('实例方法')
@classmethod
def class_func(cls):
# 定义类方法,至少有一个cls参数,自动传入类对象的引用
print('类方法')
@staticmethod
def static_func():
# 定义静态方法,无默认参数
print()
f = Foo("中国")
# 调用实例方法
f.ord_func()
# 调用类方法
Foo.class_func()
# 调用静态方法
Foo.static_func()
类对象只能调用类方法,静态方法,而实例对象可以调用类方法 静态方法 实例方法
四、预告
明天发表mysql数据库相关的知识。