类和对象:给大家介绍对象

这里写图片描述

class person:

    #属性
    age = 20
    name = "guojawee"

    #方法
    def show(self):   #函数的第一个参数必须是self
        print("年龄 = %d"  %self.age)  #属性前必须加self
        print("名字 = %s"  %self.name)

p = person()  #定义一个对象
p.show()

注解:self相当于C++中的this指针

----------------------------------------------

对象 = 属性+方法

封装
继承
多态:不同对象对同一方法,响应不同的行动

----------------------------------------------

name mangling 名字改变,名字重整

在Python中定义私有变量只需要在变量名或函数名前加上两个下划线__,
那么变量或函数就会成为私有的了。
    __变量名  改编成   _类名__变量名

继承

class 子类(父类):
    ... ... 
调用未绑定的方法
使用super

游戏:鲨鱼吃鱼

小鱼:金鱼Goldfish,鲤鱼Carp,三文鱼Salmon,
鲨鱼:Shark

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):
        #fish.__init__(self)    #fish.__init__(Shark)  #非绑定的继承
        super().__init__()   #绑定的继承
        self.hungry = True


    def eat(self):
        if self.hungry:
            print("我饿了,我要吃东西...")
        else:
            print("撑死了,吃不下了...")

组合

    一个水池类,里边有乌龟和各种鱼
class Turtle:
    def __init__(self,x):
        self.num = x


class Fish:
    def __init__(self,y):
        self.num = y


class pool:
    def __init__(self,num1,num2):  #利用组合
        self.Turtle = Turtle(num1)
        self.Fish   = Fish(num2)

    def print_num(self):
        print("水池中,有乌龟%d只,鱼%d条"  %(self.Turtle.num,self.Fish.num))

p = pool(1,2)
p.print_num()    #水池中,有乌龟1只,鱼2条

[说明]组合的使用规则:
    假设B类想组合A类,那么在B类的构造函数中,直接实例化A类的对象即可。

绑 定

    Python严格要求方法需要有实力才能被调用,这种限制其实
就是Python所谓的绑定。


一些相关的BIF

issubclass(class,classinfo)
isinstance(object,classinfo)

hasattr(object,name)  测试一个对象object中是否有name属性
getattr(object,name[,default])  获得对象object指定属性name的值
setattr(object,name,value)   没有就新建一个属性name,并设值为value
delattr(object,name)


property(fget=None,fset=None,fdel=None,doc=None)属性设置属性  

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值