类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
方法:类中定义的函数
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
语法:
class 类名:(类名要符合驼峰命名法)
属性
方法
对象的创建:属性引用和实例化
属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。
类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:
以上创建了一个新的类实例并将该对象赋给局部变量 x,x 为空的对象。
执行以上程序输出结果为:
MyClass 类的属性 i 为: 12345
MyClass 类的方法 f 输出为: hello world
创建多个对象时,可以使用初始化方法__init__(self):系统自动调用初始化方法,先生成对象,在调用此方法,再将对象赋值给引用名
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i) # 输出结果:3.0 -4.5
方法中的参数self表示类的实例,哪个对象调用该方法,self就代表这个对象的引用
类的私有属性:
两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。self.__name
类的私有方法:
两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__test()
还有get和set方法
set_赋值——(可以写其他,最好写固定,大家都认识)
定义set_方法(参数,必须有)
self__属性变成私有属性
get_取值
定义get_方法(默认self属性)
return self 加私有属性取值
用对象加set_方法名传参(添加参数赋值,赋值必须有参数)
用对象加get_方法名取值 输出取值(没有参数)
__del__ () :
当对象没有引用的时候,或程序结束的时候,程序自动调用__del__方法销毁,也可以手动调用
类方法 :
classmethod 类的成员——类属性,类方法 (cls)
定义类成员
@classmethod
def xxxx(cls): ————类属性
类属性前要加cls.——和对象self 用法一样
类名可以调用类方法 ——类名.方法名()
类名不可以直接调用对象方法()必须创建一个对象来调用对象方法
定义类时会定义一个类空间,包括所有类成员:调用多次类方法也使用同一个空间
对象方法:
对象可以直接调用类方法,多个对象调用相同的类方法也使用同一个类空间
创建对象时会默认创建一个空间,每一个对象都有自己的空间,包含所有对象成员 ,不同对象的属性输出在各自的空间
对象成员——对象属性,对象方法(self)
静态方法:
@staticmethod
def xxx(): (没有参数)
不属于类方法 也不属于对象方法,(跟类和对象无关的时候可以用静态方法)
静态方法中不可以使用类方法属性cls.,也不可以使用对象方法属性self.
但是可以用类调用静态方法,也可以用对象调用静态方法
构造方法:
__new__:
def __new__(cls,*关键字参数**动态参数,)默认类方法 ,参数必须和初始值参数一致
( __new__创建对象空间,__init__生成对象的初始值——先输出__new__创建空间,在输出__init__给对象赋值)
用来创建对象 ,默认在生成对象之前调用,必须有返回值return
return object.__new__(cls) ---(固定格式返回属性参数)
单例模式:
类里只能生成一个对象,创建多个对象会用同一个地址