类(class) 和 对象(object)

本节介绍 python 中 类(class) 和 对象(object) 的 一些基础内容,包括 定义、属性、方法。

> 类的定义

类(class) 是面向对象编程的基础,每一个 类(class) 实现了对一组 属性 和 方法 的封装,是一种具备重复使用价值的,对现实生活中的特定对象进行的抽象。

class Dog:

    # Dog的属性
    def __init__(self, name, kind, color):
        self.name = name
        self.kind = kind
        self.color = color

    # Dog的方法
    def show(self):
        print("资料".center(40,"#"))
        print("名字:{}\n品种:{}\n毛色:{}".format(self.name, self.kind, self.color))
        print("#".center(41,"#"))

    def sit(self):
        print("{}正坐在地板上!".format(self.name))

    def roll(self):
        print("{}开始打滚!".format(self.name))


# 新建一个Dog实例
my_dog = Dog("卷毛", "哈士奇", "白色")
# 访问属性
print("狗狗的名字是:{}".format(my_dog.name))
# 使用实例
my_dog.show()
my_dog.roll()


# [运行结果如下]:########################
"""
狗狗的名字是:卷毛
###################资料###################
名字:卷毛
品种:哈士奇
毛色:白色
#########################################
卷毛开始打滚!
"""
# #######################################

> 属性操作

  • 修改 对象的属性值
# 定义类
class Car:

    def __init__(self, owner, model):
        self.owner = owner
        self.model = model
        self.meter_reading = 0	# 给 类属性 设置 默认值

    def show(self):
        print(" {} 看了看里程表, {} 读数为 {} 公里!".format(self.owner, self.model, self.meter_reading))

    def go_company(self):
        print(" {} 开车到公司!".format(self.owner))
        self.meter_reading += 15	# 使用 类的方法 修改 实例对象的属性值

    def travel_to_beijing(self):
        print(" {} 开车去北京!".format(self.owner))
        self.meter_reading += 2000


# 定义函数
def buy(name, model, price):
    print(" {} 喜提新车 {} 一辆,花费 {} RMB!".format(name, model, price))
    new_car = Car(name, model)
    return new_car


def repair(obj):
    obj.meter_reading = 0   # 使用 外部函数 修改 实例对象的属性值
    print(" 4S 店重新调整了里程表!")


# 调用buy函数 买车
my_car = buy("tim", "tesla", "350000")
my_car.show()

# 使用 类的方法
print("")
my_car.travel_to_beijing()
my_car.show()

# 调用repair函数 修车
print("")
repair(my_car)
my_car.show()

# 使用 类的方法
print("")
my_car.go_company()
my_car.show()

# [运行结果如下]:########################
"""
 tim 喜提新车 tesla 一辆,花费 350000 RMB!
 tim 看了看里程表, tesla 读数为 0 公里!

 tim 开车去北京!
 tim 看了看里程表, tesla 读数为 2000 公里!

 4S 店重新调整了里程表!
 tim 看了看里程表, tesla 读数为 0 公里!

 tim 开车到公司!
 tim 看了看里程表, tesla 读数为 15 公里!
"""
# #######################################

总体来说,修改 对象的属性值 有如下几种方法:

# 1-访问对象的属性值 直接对其进行修改
my_car.meter_reading = 0 

# 2-在类中封装对应的方法,使用封装的方法对属性进行修改
my_car.go_company()
my_car.travel_to_beijing()

# 3-使用函数
repair(my_car)

注意:

python 的函数接口是 Duck Typing 风格 (向函数传参没有严格的参数类型限制,只要能运行这个函数,就不会报错) , 以上述代码为例,repair( ) 函数接收一个对象,只要这个对象具备 meter_reading 属性,函数内部代码能够正确运行,那么就是没有问题的。

--- to be continue ---

上一篇:安装mysql(非常详细,看不懂你来打我,有zip包资源)


下一篇:【ElasticSearch搜索推荐】基于ngram分词机制实现index-time搜索推荐