封装:属性+方法
>>> class turtle:
color = 'green'
def climb(self):
print('我很努力')
>>> tt = turtle()
>>> tt.climb()
我很努力
继承
>>> class Mylist(list):
pass
>>> list2 = Mylist()
>>> list2.append(3)
>>> list2
[3]
多态
>>> class A:
def fun(self):
print('我是小A')
>>> class B:
def fun(self):
print('我是小B')
>>> a = A()
>>> b = B()
>>> a.fun()
我是小A
>>> b.fun()
我是小B
init方法
>>> class Ball:
def __init__(self,name):
self.name = name
def kick(self):
print('我叫%s,该死的,谁踢我……' % self.name)
>>> b = Ball('tudou')
>>> b.kick()
我叫tudou,该死的,谁踢我……
私有变量
>>> class Person:
__name = '小甲鱼'
def getName(self):
return self.__name
>>> p = Person()
>>> p.getName()
'小甲鱼'
>>> p._Person__name
'小甲鱼'
继承深化
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 Carp(Fish):
pass
class Salmon(Fish):
pass
class Shark(Fish):
def __init__(self):
super().__init__()
self.hungry = True
def eat(self):
if self.hungry:
pirnt('吃货的梦想就是天天有的吃^_^')
self.hungry = False
else:
print('太撑了,吃不下了')
多继承
>>> class Base1:
def foo1(self):
print('我是foo1')
>>> class Base2:
def foo2(self):
print('我是foo2')
>>> class C(base1,base2):
pass
在类的方法里面,self是必须要的参数,代表类的实例,要实例化就得要有这个标志
组合
>>> class Turtle:
def __init__ (self,x):
self.num = x
>>> class Fish:
def __init__(self,x):
self.num = x
>>> class Pool:
def __init__(self,x,y):
self.turtle = Turtle(x)
self.fish = Fish(y)
def print_num(self):
print('水池里总共有乌龟%d只,小鱼%d条!' % (self.turtle.num,self.fish.num))
>>> pool = Pool(1,10)
>>> pool.print_num()
水池里总共有乌龟1只,小鱼10条!
>>> class CC:
mark = 1
def setXY(self,x,y):
self.x = x
self.y = y
def printXY(self):
print(self.x,self.y)
>>> dd = CC()
>>> dd.__dict__
{}
>>> dd.setXY(2,3)
>>> dd.__dict__
{'x': 2, 'y': 3}
>>> del CC
>>> dd.printXY()
2 3
属性名用名词,方法名用动词