面向对象的编程----类和对象的理解
创建一个狗, 狗就是对象,他有两个方面
1。狗的特征:名字 性别 品种的等
dog1 = { 'name': 'wangcai', 'gender': '公', 'type_': '藏獒', }
2。狗的能力:会坐,会跑,会叫,会咬等 --可以用函数表示一种能力
def sit(dog1): print('一条狗{%s},坐在地上' % dog1['name']) def run(dog1): print('一条狗{%s}正在跑' % dog1['type_'])
狗的特征和功能是分开的, 如何让他们之间建立联系呢? -- 一种方法就是在字典中加上
dog1 = { 'name': name, 'gender': gender, 'type_': type_, 'sit':sit, 'run': run }
就这样一条狗的特征和功能统一在一个字典中了。
# 狗的功能 def sit(dog1): print('一条狗{%s},坐在地上' % dog1['name']) def run(dog1): print('一条狗{%s}正在跑' % dog1['type_']) #狗的特征 dog1 = { 'name': name, 'gender': gender, 'type_': type_, 'sit': sit, 'run':run }
最后可以用一个函数把这个功能和特征包起来, 避免被随便调用
def dog(): # 狗的功能 def sit(dog1): print('一条狗{%s},坐在地上' % dog1['name']) def run(dog1): print('一条狗{%s}正在跑' % dog1['type_']) #狗的特征 dog1 = { 'name': name, 'gender': gender, 'type_': type_, 'sit': sit, 'run': run } return dog1
调用里面的特征和功能, 还是需要通过return返回给到我们
再进一步改善, 把字典内容也函数化
def dog(name,gender,type_):
# 狗的功能 def sit(dog1): print('一条狗{%s},坐在地上' % dog1['name']) def run(dog1): print('一条狗{%s}正在跑' % dog1['type_']) #狗的特征 def init(name,gender,type_) dog1 = { 'name': name, 'gender': gender, 'type_': type_, 'sit': sit, 'run':run } return dog1 return init(name,gender,type_)
整个一个面向对象的编程就完成了
def dog(name,gender,type_):
#狗的特征 def init(name,gender,type_) dog1 = { 'name': name, 'gender': gender, 'type_': type_, 'sit': sit, 'run': run } return dog1 # 狗的功能 def sit(dog1): print('一条狗{%s},坐在地上' % dog1['name']) def run(dog1): print('一条狗{%s}正在跑' % dog1['type_']) return init(name,gender,type_)
然后就可以调用了
d1=dog('旺财','母','藏獒') d2=dog('狗狗','母','猎肠') d1['sit'](d1) d2['run'](d2)
整个一个面向对象的编程就完成了
看上去是否很像类和对象呢?
class Dog(): def __init__(self, name, gender): self.name = name self.gender = gender def sit(self): print('一条狗%s,坐在地上' % self.name) def run(self): print('一条狗{%s}正在跑' % self.gender)
name,gender,type_