学习python的第五天笔记
30、036
对象 = 属性 + 方法
#属性就是对象本身自带的特征,例如:身高体重,年龄等;
#方法就是对象干的事情,例如:跑步,打球等;
创建对象,例如:class 对象名:
面向对象的特征:封装、继承、多态。
#继承是子类继承父类,例如:class Mylist(list):
pass#跳过的意思
list1 = Mylist()#list1
list1.append(0)
list1.append(9)
list1
[0,9]
#多态就是对象可以有多种形态,例如:class A:
def fun(self):
print("你好呀!")
class B:
def fun(self):
print("你好")
a = A()
b = B()
a.fun()#A变成a后,一样可以调用这个函数
你好呀!
31、037
self相当于函数的指针,例如:class Ball:
def setName(self,name):
self.name = name
def kick(self):
print("我叫%s" % self.name)
a = Ball()
a.setName('小白')
b = Ball()
b.setName('小包')
a.kick()#a中的值记录在指针self上了,由self.name去找对应的名字
我叫小白
b.kick()#b中的值记录在指针self上了,由self.name去找对应的名字
我叫小包
_init_用法,例如:class Ball:
def _init_(self,name):
self.name = name
def kick(self):
print("我叫%s" % self.name)
共有于私有的划分,只需要在定义的名字前面加多两个下滑线就行,例如class Person:
_ _name = "小鹏"
p = Person()
p._ _name#这样访问是访问不了的。
p._Person_ _name#其实加了双下划线就是将变量名变成了_类名_ _变量名
32、038
继承:子类可以继承父类的所有属性,例如:
import random as r
class Fish:#鱼类都有的属性
def __init__(self):
self.x = r.randint(0,10)
self.y = r.randint(0,10)
def move (self):#让鱼类都先左边移动,到达边界值时从另一边的边界出现。
if self.x < 1:
self.x = 10
self.x -= 1
print("我现在的位置为:",self.x,self.y)
else:
self.x -= 1
print("我现在的位置为:",self.x,self.y)
class Goldfish(Fish):#Goldfish继承Fish的属性
pass
class Carp(Fish):#Carp继承Fish的属性
pass
class Salmon(Fish):
pass
class Shark(Fish):
def __init__(self):
super().__init__()#super函数可以自动帮你早到之前父类的内容。
self.hungry = True
def eat (self):
if self.hungry:
print("我要吃了你")
self.hungry = False
else:
print("我饱了!")
33、039
类,类对象和实例对象,例如:
class C:#在定义时C就是类,在定义结束时C就是类对象
def setXY(self,x,y):
self.x = x
self.y = y
def printXY(self):
print(self.x,self.y)
d = C()#这里的d就是实例对象相当于在函数中self变成了d来存储要输入的值,例如变成了d.x = x和d.y = y
33、040
#issubclass(子类,父类)用于检查是否为父子类关系,若是返回True,否则返回False
#isinstance(实例对象,父类)用于检查实例化对象是否来自某个父类,若是返回True,否则返回False
#hasattr(对象,'属性')用于检查对象中是否有这个属性。
#setattr(对象,'属性','属性的值')若访问的对象没有查找的属性事,会创建这个属性并赋予属性值
#property(获得属性的方法,修改属性的方法,删除属性的方法)用于修改对象的属性。