- OO的特征Object Oriented面向对象,封装(信息隐蔽技术)、继承、多态
class Turtle:
#属性
color = 'green'
weight = 10
legs = 4
shell = True
mouth = '大嘴'
#方法
def climb(self):
print('我正在努力爬')
def run(self):
print('我正在飞快地前进')
def bite(self):
print('咬死你')
def eat(self):
print('有的吃')
def sleep(self):
print('睡觉')
tt = Turtle()
tt.climb()
- 多态性
class A:
def fun(self):
print('我是小A')
class B:
def fun(self):
print('我是小B')
a=A()
b=B()
a.fun()
b.fun()#函数名字一样但是结果不一样
结果
我是小A
我是小B
self是什么东西?
相当于C++的this指针,类是图纸而由类实例化的对象才是能住人的房子
class Ball:
def setname(self,name):
self.name = name
def kick(self):
print('我叫%s,该死的谁替我'% self.name)
a = Ball()
a.setname('球A')
b = Ball()
b.setname('球B')
c = Ball()
c.setname('土豆')
a.kick()
c.kick()
结果如下,跟多态化是不太一样的,
我叫球A,该死的谁替我
我叫土豆,该死的谁替我
- 继承
class Parent
def hello(self):
print('正在调用父类的方法,,,')
class Child(Parent):
pass
P = Parent()
p.hello()
c = Child()
c.hello()#如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性
结果:
正在调用父类的方法,,,
正在调用父类的方法,,,
-我们在Box类中定义了setDimension方法去设定该Box的属性,这样过于繁琐,而用__init__()这个特殊的方法就可以方便地自己对类的属性进行定义,init()方法又被称为构造器(constructor)。init实例化解释
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 Goldfish(Fish)
pass
class Caro(Fish)
pass
class Shark(Fish):
del __init__(self):
super().__init__()
self.hungry = True
def eat(self):
if self.hungry
print('撑死你了')
self.hungry = False
else
print('吃不下了')