本节介绍 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 ---