最新消息:

少儿Python基础(9) | 类与面向对象(2)

Python 少儿编程 1700浏览 0评论
Python少儿编程02

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

类中方法和属性的使用

少儿Python | 类与面向对象(2)

创建实例对象

创建实例对象就是类的实例化,类似函数调用方式

语法:

对象名 = 类名()

这里使用类的名称Person来实例化

#创建Person类的第一个对象
 p1=Person()
#创建Person类的第二个对象
 p2=Person()

少儿Python | 类与面向对象(2)

访问属性和方法

(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()
>>> hasattr(c1,'x')
True
>>>

getattr(object,name[,default])范例:

>>> getattr(c1,'y')
Traceback (most recent call last):
  File "<pyshell#197>", line 1, in <module>
    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 "<pyshell#202>", line 1, in <module>
    delattr(c1,'y')
AttributeError: y
>>>

 

05

构造函数和析构函数

少儿Python | 类与面向对象(2)

构造函数

构造函数【作用:创建对象,给对象的成员变量赋初始值】
调用的时机:当一个对象被创建的时候,第一个被自动调用的函数

语法:

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
>>> rect=Rectangle(3,4)
>>> rect.getPeri()
14
>>> rect.getArea()
7
>>>

少儿Python | 类与面向对象(2)

析构函数

与构造函数正好相反,当对象被销毁的时候自动调用的函数,被称为析构函数

格式:__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

您必须 登录 才能发表评论!