类和对象:
类:主要是将方法(函数)和属性(变量)封装到类里,方便引用和管理。
对象:类的实例,主要负责调用类中封装的属性和方法。
知识点:
- self和super关键字的区别;
- 类中装饰器的:@property、@classmethod、@staticmethod;
- 指针和内存地址之间的关系;
- 类中私有变量的设置
- 类的继承的作用、特点、使用
- 类中方法的重写;
- 类的多继承
object是Python中类的根类、最底层的类,所有类最终都继承于object类
class People(object):
"""
定义类的描述
"""
#这里定义的是类属性
name='123'
def __init__(self,u_name,u_age):
"""
对象初始化方法,当对象被创建完成,自动调用该方法,用于初始化一些属性
对象创建使用__new__(self)方法,该方法会给对象开辟内存空间
self:表示当前类的对象,相当于this
当创建一个people对象p1,那么程序就会将类中的属性拷贝到对象p1的内存中
当创建一个people对象p2,那么程序就会将类中的属性拷贝到对象p2的内存中
谁使用,self就指向那个对象
"""
给对象初始化属性,__ init__()中的属性称为对象属性或者实例属性,这些属性用来保存数据
而这些被保存的数据放在对象的内存空间
self.u_name=u_name
self.u_age=u_age
def add_student(self):
print('self = ', self)
self不需要我们给他传递参数,self是由python解释器传递的,自定义参数写self后边
print(self.u_age,self.u_name)
@classmethod
def update_student(cls,number): # 类可以直接调用,不需要定义类对象,通过对象调用
print('-------',cls,number)
People.update_student(10)
p1=People('李四',20)
print('p1= ',p1.u_age)
p1.add_student()
p1.update_student(100)
p2=People('ll',21)
print('p2 = ',p2.u_age)
p2.add_student()
p2.update_student(10)
类属性:所有对象公有的属性,如果类修改了类属性,这个类定义的对象会受影响。类属性既可以使用类名调用,也可以使用对象调用,对象只能使用类属性,但是不能修改,只有通过类调用类属性,才能修改类属性的值通过对象调用类属性并对这个属性赋值,此时的属性不再是原来的类属性,而是一个新的动态对象属性
对象属性:每个对象私有的属性,放在自己的内存空间,修改实例属性的值,只对自己产生影响
对象属性只能由实例对象调用,不能使用类名去调用
print(People.name,p1.name,p2.name)
静态方法: 加@staticmethod 声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量
类方法:加@classmethod声明,类属性既可以使用类名调用,也可以使用对象调用
对象方法:只能通过对象调用
工具类:因为加了@classmethod注释,因此可以不用声明对象。不需要声明属性/数据操作类()
class DBTool(object):
"""
处理数据库工具
"""
@classmethod # 装饰器
def insert(cls): # cls当前类,不能使用self(对象)
pass
@classmethod
def update(cls):
pass
class StrTool(object):
@classmethod
def removeSpace(cls):
pass
@classmethod
def replaceSpace(cls):
pass
DBTool.insert()
DBTool.update()