01-面向对象基础

类和对象

类:是对一群具有相同特征和行为的事物的一个统称,类是抽象的,是不能直接使用的。

  • 特征被称为属性
  • 行为被称为方法

对象:是由类创建出来的一个具体存在,可以直接使用。

dir内置函数

在标识符/数据后输入一个.,按下Tab键,iPython会提示该对象能够提供的方法列表
使用内置函数dir传入标识符/数据,可以查看该对象所有的属性和方法

提示:__方法名__格式的方法是python提供的内置属性和方法。

In [1]: def demo(): 
   ...:     print("hello")                                                      

In [2]:                                                                         

In [2]: dir(demo)                                                               
Out[2]: 
['__annotations__',
 '__call__',
 '__class__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__str__',
 '__subclasshook__']
类的定义
class 类名
    def 方法1(self,参数列表):
    pass

    def 方法2(self,参数列表):
    pass
对象的创建
对象 = 类名()
class Cat:
    def eat(self):
        # 哪个对象调用,传递的就是该对象的引用
        print("%s 吃鱼" % self.name)

    def drink(self):
        print("%s 喝水" % self.name)


# 创建对象
tom = Cat()
tom.name = "汤姆猫"
tom.eat()
tom.drink()

注意:可以通过给对象赋值的方法,给类增加属性,但不推荐使用。

初始化方法

使用类名()创建对象时,会做以下事情:

  • 给对象在内存中分配存储空间-创建对象
  • 给对象的属性设置初始值-初始化方法init
class Cat:
    def __init__(self):
        print("这是一个初始化方法")


tom = Cat()
class Cat:
    def __init__(self, new_name):
        print("这是一个初始化方法")
        self.name = new_name
    def eat(self):
        print("%s 吃鱼" % self.name)

tom = Cat("汤姆猫")
tom.eat()
del方法

在python中,当创建一个对象的时候会调用init方法,而当一个对象从内存中销毁的时候回调用del方法。

class Cat:
    def __init__(self, new_name):
        print("这是一个初始化方法")
        self.name = new_name

    def eat(self):
        print("%s 吃鱼" % self.name)

    def __del__(self):
        print("%s 销毁了" % self.name )

tom = Cat("汤姆猫")
tom.eat()

# del可以将一个对象从内存中删除
del tom

print("-" * 50)
str内置方法
class Cat:
    def __init__(self, new_name):
        print("这是一个初始化方法")
        self.name = new_name

    def eat(self):
        print("%s 吃鱼" % self.name)

    def __del__(self):
        print("%s 销毁了" % self.name)

    def __str__(self):
        # 必须返回一个字符串
        return "我是 【%s】" % self.name

tom = Cat("汤姆猫")
tom.eat()

print(tom)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象编程,Object-Oriented Programming对象是一个自包含的实体,用一组可识别的特性和行...
    Lv1_Sans阅读 274评论 0 0
  • 一 封装 概念:是指隐藏对象的属性和实现细节, 仅对外提供访问的方式 好处:讲变化隔离;便于使用;提高重用性;安全...
    fordring2008阅读 178评论 0 0
  • 维度变更已定 我不及你脚尖轻踏的落叶 似已在别样时间 遗忘是未尝 失散沦陷在命的折点 胆怯迫使言语不能在你耳边 字...
    漫廷阅读 258评论 0 1
  • 你是无边无际的晨曦天空 我像孤寂无助的飞翔小鸟 爱你爱得纯蓝将近真湛蓝 随风入夜 脸颊绯红 身影惊鸿 笑容春风 馥...
    程雨露阅读 725评论 6 12