友情提示:380元/半年,儿童学编程,就上码丁实验室。
类的定义
语法:
class 类名():
类体
注意:
类名要遵循(首单词的首字母大写,不同单词之间首字母大写)
范例:
class MyClass:
pass
类的设计
三要素:
事物名称【类名】:举例:人
事物的属性【变量】:名词,举例:姓名,年龄。
事物的行为【函数/方法】:动词,举例:吃,玩。
类中的方法和变量
#定义类
class Person():
#事物的属性(变量)
name = ""
age = 0
#方法
def eat(self,food):
print("eating",food)
def play(self,ball):
print("palying",ball)
事物的属性【变量】:姓名,年龄。
事物的行为【函数/方法】:吃,玩。
类中方法和属性的使用
创建实例对象
创建实例对象就是类的实例化,类似函数调用方式
语法:
对象名 = 类名()
这里使用类的名称Person来实例化
#创建Person类的第一个对象
p1=Person()
#创建Person类的第二个对象
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 = 21
print(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()
'x') > hasattr(c1,
True
>
getattr(object,name[,default])范例:
'y') > getattr(c1,
Traceback (most recent call last):
File "<pyshell#197>", line 1, in <module>
getattr(c1,'y')
AttributeError: 'C' object has no attribute 'y'
'y','你访问的属性不存在') > getattr(c1,
'你访问的属性不存在'
>
setattr(object,name,value)范例:
'y','你所访问属性存在了') > setattr(c1,
'y') > getattr(c1,
'你所访问属性存在了'
>
'y') > delattr(c1,
'y') > delattr(c1,
Traceback (most recent call last):
File "<pyshell#202>", line 1, in <module>
delattr(c1,'y')
AttributeError: y
>
构造函数和析构函数
构造函数
构造函数【作用:创建对象,给对象的成员变量赋初始值】
调用的时机:当一个对象被创建的时候,第一个被自动调用的函数
语法:
def __init__(self,args1,args2….)
函数体
说明:
a.之前的写法中并没有显式的定义__init__函数,说明系统默认提供了一个无参的构造函数
class Rectangle: >
def __init__(self,x,y): #重写
self.x=x #self.x类实例化之后实例对象的局部变量 x:传入的参数
self.y=y #init方法返回值一定是None
def getPeri(self):
return (self.x+self.y)*2
def getArea(self):
return self.x*self.y
3,4) > rect=Rectangle(
> 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__方法,我被调用了...
>
当没有任何变量去引用这个对象的时候,垃圾回收机制自动把它销毁
使用情景:清理工作,比如关闭数据库,关闭文件等
THE END