类与魔方方法

一、类与对象

  1. 封装:信息隐蔽技术
    我们可以使用关键字class定义python类,关键字后面紧跟类的名称、分号和类的实现。
class Turtle:
    color ='green'
    weight = 10
    legs = 4
    shell = True
    mouth = '大嘴'
    
    #方法
    def climb(self):
        print('我正在努力向前爬')
        
    def run(self):
        print('我正在飞快向前跑')
        
    def bite(self):
        print('咬死你,咬死你')
# 2 继承:子类自动共享父类之间数据和方法的机制
class MyList(list):
    pass

lst = MyList([1,5,2,7,8])
lst.append(9)
lst.sort()
print(lst)
# 3. 多态,不同对象对同一方法响应不同的行动
class Animal:
    def run(self):
        raise AttributeError('子类必须实现这个方法')
        
class People(Animal):
    def run(self):
        print('人正在走')
        
class Pig(Animal):
    def run(self):
        print('pig is walking')
        
class Dog(Animal):
    def run(self):
        print('dog is running')
        
def func(animal):
    animal.run()
    
func(Pig())

self

# 类的方法与普通函数只有一个特别的区别,它必须有一个额外的第一个参数名称,
# 按照惯例,名称为self。在调用方法时,我们无需明确提供与参数self相对应的参数
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('球c')
a.kick()
b.kick()

组合

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("水池里面有乌龟%s只,小鱼%s条"%(self.turtle.num,self.fish.num))
        
p = Pool(2,3)
p.print_num()

按照一下方法定义一个游乐园门票的类,并计算2个成人+一个小孩的平日票价

#定义一个游乐园门票的类,计算2个成人和一个小孩平日票价
"""
平日票价100元
周末票价为平日的120%
儿童票半价
"""

class Ticket():
    def __init__(self,weekend = False,child=False):
        self.exp = 100
        if weekend:
            self.inc = 1.2
        else:
            self.inc = 1
        
        if child:
            self.discount = 0.5
        else:
            self.discount = 1
        #self.price = 120
        
    def calcPrice(self,num):
        return self.exp*self.inc*self.discount*num
    
adult = Ticket()
child = Ticket(child = True)
print("2个成人+1个小孩的平日票价为:%.2f"%(adult.calcPrice(2)+child.calcPrice(1)))

魔方方法

# 魔方方法总是被双下划线包围,如__init__
# 魔方方法的第一个参数应为cls方法,或者self实例方法

你可能感兴趣的:(笔记)