欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

8 面向对象基础(一)

程序员文章站 2022-06-06 21:26:55
...

8.1面向对象编程介绍

  • 面向对象(object-oriented ;简称: OO)
  • 面向对象编程(Object Oriented Programming-OOP)
  • 面向过程

8.2 类和对象

8.3 定义类

8.4 创建对象

class Dog(object):    # 定义一个Dog类

    def eat(self):    # 定义一个eat方法
        print("---吃---")

    def drink(self):   # 定义一个drink方法
        print("---喝---")

wang_cai = Dog()   # 创建一个对象,创建一个实例

wang_cai.eat()
wang_cai.drink()
# wang_cai.say()
xiao_tian = Dog()
xiao_tian.eat()
xiao_tian.drink()

8.5 添加和获取对象的属性

class Dog(object):

    def eat(self):
        print("---吃---")

    def drink(self):
        print("---喝---")

wang_cai = Dog()
wang_cai.name = "旺财"    # 给wang_cai这个对象添加一个name属性
wang_cai.age = 10
print(wang_cai.name)
print(wang_cai.age)
# wang_cai.eat()

xiao_tian = Dog()
xiao_tian.name = "哮天"
xiao_tian.age = 12
print(xiao_tian.name)

8.6 self

"""
给对象添加属性:
wang_cai.name = "旺财" 
对象名.属性名 = 值

获取对象的属性:
对象名.属性名



wang_cai.say()  # 在调用这个say方法的时候,python解释器帮我们传递了前面这个对象作为实参被self接收了,所以谁在调用,self就是谁
"""


class Dog(object):

    def eat(self):
        print("---吃---")

    def drink(self):
        print("---喝---")

    def say(self):
        print("我的名字叫%s" % self.name)

wang_cai = Dog()
wang_cai.name = "旺财"    # 给wang_cai这个对象添加一个name属性

wang_cai.say()  # 在调用这个say方法的时候,python解释器帮我们传递了前面这个对象作为实参被self接收了,所以谁在调用,self就是谁



xiao_tian = Dog()
xiao_tian.name = "哮天"
xiao_tian.say()

8.7 init()方法

"""
wang_cai = Dog("旺财", 10) 

到底做了哪些事情:
1、创建一个对象
2、创建对象成功之后,自动调用__init__()方法
3、让wang_cai去指向这个创建出来的对象
"""


class Dog(object):

    def __init__(self, aaa, bbb):
        """
            初始化方法
            在创建对象之后,把一些属性先设置好
        """
        self.name = aaa
        self.age = bbb

    def eat(self):
        print("---吃---")

    def drink(self):
        print("---喝---")


wang_cai = Dog("旺财", 10)    # 创建对象(实例)
# wang_cai.name = "旺财"
# print(wang_cai.name)
# print(wang_cai.age)
#
#
# xiao_tian = Dog("哮天", 12)
# print(xiao_tian.name)
# print(xiao_tian.age)

8.8__str__()方法

"""
wang_cai = Dog("旺财", 10) 

到底做了哪些事情:
1、创建一个对象
2、创建对象成功之后,自动调用__init__()方法
3、让wang_cai去指向这个创建出来的对象
"""


class Dog(object):

    def __init__(self, aaa, bbb):
        """
            初始化方法
            在创建对象之后,把一些属性先设置好
        """
        self.name = aaa
        self.age = bbb

    def __str__(self):
        """
            美化直接打印对象名的结果(直接打印对象名得到的是一个地址)
            1、这个方法里面一定要有return
            2、return 返回值一定是字符串
            
            直接打印打印对象名的时候就不再是地址了,而是return后面的这个字符串
            所以直接打印对象名的时候,就会来执行这里的代码
        """
        return "我叫%s,今年%s岁了" % (self.name, self.age)

    def eat(self):
        print("---吃---")

    def drink(self):
        print("---喝---")


wang_cai = Dog("旺财", 10)    # 创建对象(实例)
print(wang_cai)

8.9 del()方法

  • 创建对象后,python解释器默认调用__init__()方法;

  • 当删除对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法

  • 当有变量保存了一个对象的引用时,此对象的引用计数就会加1;

  • 当使用del() 删除变量指向的对象时,则会减少对象的引用计数。如果对象的引用计数不为1,那么会让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。

8.10 应用:烤地瓜

"""
烤地瓜:
示例属性如下:
cookedLevel : 这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时时生的
cookedString : 这是字符串;描述地瓜的生熟程度
condiments : 这是地瓜的配料列表,比如番茄酱、芥末酱等
示例方法如下:
cook() : 把地瓜烤一段时间
addCondiments() : 给地瓜添加配料
__init__() : 设置默认的属性
__str__() : 让print的结果看起来更好一些
"""


class Yam(object):

    def __init__(self):
        # 定义一个属性,来描述生熟程度
        self.string = "生的"
        # 定义一个属性,记录地瓜被烤的总时长
        self.all_time = 0
        # 定义一个列表,来存放这些配料
        self.condiments = []

    def __str__(self):
        return "这个地瓜%s, 已经添加的配料有:%s" % (self.string, self.condiments)

    def cooked(self, time):
        self.all_time = self.all_time + time

        if 0 <= self.all_time <= 3:
            # 还是生的
            self.string = "生的"
        elif 3 < self.all_time <= 5:
            # 半生不熟
            self.string = "半生不熟"
        elif 5 < self.all_time <= 8:
            # 已经烤好了
            self.string = "烤好了"
        else:
            # 烤成木炭了
            self.string = "烤成木炭"

    def add_sth(self, name):
        self.condiments.append(name)

yam = Yam()
print(yam)
yam.cooked(4)
print(yam)
yam.cooked(2)
print(yam)
#
yam.add_sth("辣椒酱")
yam.add_sth("孜然")
yam.add_sth("番茄")
print(yam)
相关标签: python 入门教程