二十. Python基础(20)--面向对象的基础
1 ● 类/对象/实例化
类:具有相同属性、和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数) # 这个参数传给__init__方法 类的的定义 : class关键字 类名(首字母大写) |
2 ● 面相对象方法在什么时候用?
需要反复传递相同的参数给一些函数的时候 例如一个长方形的长/宽作为参数反复传递给计算面积/周长/对角线的函数 |
3 ● 属性
① 类中的属性: #静态属性:类属性 #动态属性:方法 ② 对象的属性: # __init__()方法初始化而来 # 在类内调用对象的属性:self.属性名 # 在类外调用对象的属性:对象名.属性名 |
4 ● 案例: 人狗大战
class Person: role = 'person' #静态属性/类属性: 所有对象共有的属性,可以直接被类调用 def __init__(self,name,sex,aggressive=200): #对象属性: 只属于某一个对象, 必须在实例化之后才能被对象调用 self.name = name #名字 self.sex = sex #性别 self.aggr = aggressive #攻击力 self.blood = 2000 #血
def attack(self,dog): #类里面所有的方法本质上都是函数,拥有一个必须传递的参数self print('%s attack %s'%(self.name,dog.name)) dog.blood -= self.aggr
class Dog: def __init__(self,name,aggressive=500): self.name = name self.aggr = aggressive self.blood = 8000
def bite(self,person): print('%s bites %s'%(self.name,person.name)) person.blood = person.blood - self.aggr if person.blood <= 0: print('game over : %s'%person.name)
alex = Person('alex','male',250) egon = Person('egon','male') teddy = Dog('Mica') teddy.bite(alex) print(alex.blood) teddy.bite(alex) print(alex.blood)
''' Mica bites alex 1500 Mica bites alex 1000 ''' |