01
类的定义
语法:
class 类名():
类体
注意:
类名要遵循(首单词的首字母大写,不同单词之间首字母大写)
范例:
class MyClass: pass
02
类的设计
三要素:
事物名称【类名】:举例:人
事物的属性【变量】:名词,举例:姓名,年龄。
事物的行为【函数/方法】:动词,举例:吃,玩。
03
类中的方法和变量
#定义类class Person():#事物的属性(变量) name = "" age = 0
#方法 def eat(self,food): print("eating",food) def play(self,ball): print("palying",ball)事物的属性【变量】:姓名,年龄。
事物的行为【函数/方法】:吃,玩。
04
类中方法和属性的使用
创建实例对象
创建实例对象就是类的实例化,类似函数调用方式
语法:
对象名 = 类名()
这里使用类的名称Person来实例化
#创建Person类的第一个对象 p1=Person() #创建Person类的第二个对象 p2=Person()
访问属性和方法
(1)可以使用点号 . 来访问对象的属性和方法。
语法:
访问变量采用:对象名.属性名
访问方法采用:对象名.方法名(参数列表)
#定义类class Person(): #属性 name = "" age = 0
#方法 def eat(self,food): print("eating",food) def play(self,ball): print("playing",ball)
#实例化对象p1 = Person()p2 = Person()
#访问属性#语法:对象.属性名#赋值:对象.属性 = 值p1.name = "小明"print(p1.name)p1.age = 21print(p1.age)
#调用方法p1.play("football")p1.eat("香蕉")
(2)也可以使用以下函数的方式来访问属性:
getattr(obj, name[, default]) : 访问对象的属性。
hasattr(obj,name) : 检查是否存在一个属性。
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
delattr(obj, name) : 删除属性。
hasattr(obj,name) 范例:
>>> class C:def __init__(self,x=0): self.x=x>>> c1=C()>>> hasattr(c1,'x')True>>>
getattr(object,name[,default])范例:
>>> getattr(c1,'y')Traceback (most recent call last): File "", line 1, in getattr(c1,'y')AttributeError: 'C' object has no attribute 'y'>>> getattr(c1,'y','你访问的属性不存在')'你访问的属性不存在'>>>
setattr(object,name,value)范例:
>>> setattr(c1,'y','你所访问属性存在了')>>> getattr(c1,'y')'你所访问属性存在了'>>>
delattr(object,name)范例:
>>> delattr(c1,'y')>>> delattr(c1,'y')Traceback (most recent call last): File "", line 1, in delattr(c1,'y')AttributeError: y>>>
05
构造函数和析构函数
构造函数
构造函数【作用:创建对象,给对象的成员变量赋初始值】
调用的时机:当一个对象被创建的时候,第一个被自动调用的函数
语法:
def __init__(self,args1,args2....)
函数体
说明:
a.之前的写法中并没有显式的定义__init__函数,说明系统默认提供了一个无参的构造函数
>>> class Rectangle:def __init__(self,x,y): #重写 self.x=x #self.x类实例化之后实例对象的局部变量 x:传入的参数 self.y=y #init方法返回值一定是Nonedef getPeri(self): return (self.x+self.y)*2def getArea(self): return self.x*self.y>>> rect=Rectangle(3,4)>>> rect.getPeri()14>>> rect.getArea()7>>>
析构函数
与构造函数正好相反,当对象被销毁的时候自动调用的函数,被称为析构函数
格式:__del__(self)
>>> class C: def __init__(self): print("我是__init__方法,我被调用了...") def __del__(self): print("我是__del__方法,我被调用了...")
>>> c1=C()我是__init__方法,我被调用了...>>> c2=c1>>> c3=c2>>> del c3>>> del c2>>> del c1我是__del__方法,我被调用了...>>>
当没有任何变量去引用这个对象的时候,垃圾回收机制自动把它销毁
使用情景:清理工作,比如关闭数据库,关闭文件等



