python基础语法之--类、 对象、封装、继承

# 面向过程:将业务分成一个个的过程和步骤
# 现象对象:将业务分成一个个的对象
# 创建类:定义某个类的对象具有的属性(变量)和方法(函数)
# 建议:类的首字母大写,为的是跟对象区分开
#一、类
#class里面的每个函数都有固定的参数:self
#self关键词:在类的内部表示当前对象
class Cat:
    def __init__(self,nick,color,age):#初始化方法,一开始写成了int,报错:TypeError: Cat() takes no arguments
        #猫的三个属性(变量)
        self.nick=nick
        self.color=color
        self.age=age
        self.pinzhong="加菲猫"#可以在类里面直接附上属性值
#在创建对象的时候就会调用__init__方法
    def eat(self,count):
        print(self.nick,"猫在吃鱼,吃了",count,"条鱼")
#今后使用这个猫的类,就创建这个类的对象即可,对象包含了三个属性,一个方法
#二、对象
#格式:对象名=类名(属性值1,属性值2)
cat1=Cat("小毛","白色",2)
cat2=Cat("小嗨","黑色",1)
#对象创建好了,可以做两件事情,1:获取某个对象的属性值
print(cat1.color)
#2.通过某个对象调用方法
cat1.eat(3)#在调用eat方法的时候除了传3之外,也传了cat1本身,也就是self
print(cat1)#返回:<__main__.Cat object at 0x0000025D794EFC40>,表示是个Cat的对象,at后面的是该对象在内存中的地址编号

#三、练习
class Card():
    def __init__(self,cnum,cpwd,cbalance):
        self.bankName="工商银行"
        self.cnum=cnum
        self.cpwd=cpwd
        self.__cbalance=cbalance#私有属性
    def __login(self):#私有方法
        cunm1=input("请输入银行卡号")
        cpwd1=input("请输入银行卡号对应的密码")
        if self.cnum==cunm1 and self.cpwd==cpwd1:
            print("登录成功")
            return "ok"
        else:
            print("登录失败")
            return "no"
    def addmoney(self):
        a=self.__login()#可以在类的内部调用其他方法,使用self作为对象名
        if a=="ok":
            cunkuan=int(input("请输入存款金额"))
            allin=int(self.__cbalance)+cunkuan
            print("当前余额是",allin)
card1=Card("669988","123qwe","1000")
card1.addmoney()
#print(card1.__cbalance)#会报错,AttributeError: 'Card' object has no attribute '__cbalance',私有化的属性和方法只能在类的内部被调用
#在搞面向对象的应用前呢,登录这样的操作,需要先将卡号密码都存在一个列表中然后遍历列表进行判断,现在是哪个卡号调用这个方法,就对哪个对象进行判断就可以了
#四、封装
#封装,将类中的属性或者方法私有化,私有化的属性和方法只能在类的内部被调用,就是在方法或者属性前面加上“__”
#五、类的继承
#父类:将多个类中的公共属性和方法统一定义
class Animal():
    def __init__(self,nick,color,age):
        self.color=color
        self.age=age
        self.nick=nick
    def eat(self):
        print(self.nick,"在吃")
    def run(self):
        print(self.nick,"在跑")
#子类怎么继承父类
class Cat(Animal):#直接在括号中输入父类
    pass
c1=Cat("小毛","白色","3岁")#init方法的属性值一定要赋值上去
c1.eat()
#一个父类可以有多个子类,一个子类可以有多个父类(多继承,用的很少)。object是所有类的父类










猜你喜欢

转载自blog.csdn.net/qq_40333984/article/details/125513493