第十一章
理解类与对象,他们的关系,理解【继承】【组合】两个概念。
接下来进去编码的重点章节,整章内容都是重点。
任务1:写一遍整章的所有例子并理解例子所讲的知识点,做笔记。
任务2:编写类描述 人类,中国人,印度人,亚洲人,非洲人,广东人,的特征和能力。【想到什么特征和能力就写上去】
(代码文件要放马云上)
import random as r
class Fish:
def __init__(self):
self.x = r.randint(0, 10)
self.y = r.randint(0, 10)
def move(self):
#这里主要演示类的继承机制,就不考虑检查差场景边界和移动方向的问题
#假设所有鱼都是一路向西游
self.x -= 1
print("我的位置是:", self.x, self.y)
class Godfish(Fish):
pass
class Carp(Fish):
pass
class Salmon(Fish):
pass
#上边几个都是食物,食物不需要有个性,所有直接继承fish类的全部属性和方法即可
#下边定义鲨鱼类,这个是吃货,除了继承fish类的属性和方法,还要添加一个吃的方法
class Shark(Fish):
def __int__(self):
self.hungry = Ture
def eat(self):
if self.hungry:
print("吃货的梦想就是天天有的吃")
self.hungry = False
else:
print("太撑了,吃不下了!")
跑错
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
fish.move()
File "C:/Users/a/Desktop/161401135-雷伟亮/继承,鱼的例子.py", line 12, in move
self.x -= 1
AttributeError: 'Fish' object has no attribute 'x'
今天总结:
1、对象=属性+方法。一个对象的特征为“属性”,一个对象的行为称为“方法”。
2、self:就相当于每个房子的门牌号,用法如下
class Ball:
def setName(self,name):
self.name = name
def kick(self):
print("我叫%s,我好帅!" % self.name)
c = Ball()
c.setName("宁爷")
b = Ball()
b.setName("宁哥")
3、print("我叫%s,我好帅!" % self.name) 中 。%s 令牌允许我插入(和潜在的格式)的字符串。比如,"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike".
4、公有:通过(.)进行访问,比如p.name。
-----私有:在变量名或函数名前加”__“两个下划线表示,比如p.__name。
5、继承,相似的机制自动传递,class类名(被继承的类)
class parent:
def hi(self):
print("正在调用父类的方法...")
class child(parent):
pass
p = parent()
p.hi()
c = child()
c.hi()
class child(parent):
def hi(self):
print("正在调用子类的方法...")
c = child()
c.hi()
余留问题和任务·:
1__int__()方法称为构造方法,构造函数没看懂
2、 学习到课本,111页,自己看书学得有点燥。明天继续学习组合,努力看每一个字,解决上面继承跑错的问题,之后完成任务二。
3、代码还没试过上传的码云上,不知上传有没问题,一定要再Linux终端上传吗?
4、最近长痘,今晚早睡。