python第五章自己的笔记总结(6)

这篇博客详细记录了作者在学习Python面向对象编程时的笔记,包括定义动物类及其初始化方法,探讨了派生类访问、类内部访问和对象访问的规则,并在后续章节中创建了学生类、老师类以及密码管理类,实践了封装的概念。通过多次实验,深入理解了类的继承、封装和多态特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次

‘’’

定义一个动物类

class animal(object):
    color="yellow"#属性
    #方法
    def eat(self,food):
        print("吃",food)
    def sleep(self):
        print("睡")
dog=animal()
dog.eat("骨头")

cat=animal()
cat.eat("鱼")

‘’’
“”"

1.在python3中,类可以写括号,因为它默认继承object
2.所有的方法加了一个self
  self是类的实例,并不是一个类
  self和Java中的this一样,你可以使用this
  但是在python中约定俗成的就是self

“”"

class person:
    #初始化   类似Java中的构造函数
    def __init__(self,name,age,sex,phone,idCar):
        self.name=name
        self.age=age
        self.sex=sex
        self.phone=phone
        self.idCar=idCar
    def show(self):#展示
        print(self.name,self.age,self.sex,self.phone,self.idCar)

初始化创建对象

#p=person("张三",18,"男","1111111","1111")
#p.show() #张三 18 男 1111111 1111
class student(person):

重写

def __init__(self, name,age,sex,phone,idCar,hobbit):

调用父类中的初始化方法

super().__init__(name,age,sex,phone,idCar)
self.hobbit=hobbit
def show(self):#重写
    super().show()#父类中的show
    print("学生类中的show方法")
#s=student("张三",18,"男","111","222","好色,怕鬼,爱看腿")
#print(s.name)
#print(s.hobbit)
#s.show()

“”"

1.重写:(1)两个类有继承关系(2)方法名一样
2.__init__方法也会继承过来,所以定义对象的时候,要写参数
3.调用父类中的属性和方法使用super()
4.重写__init__方法时要记得传参

“”"

属性和方法

“”"

静态属性:直接写在类里面的是静态属性
动态属性:写在初始化里面的是动态属性,因为他可以改变

静态方法:staticmethod
普通方法:

公有:公共的
私有:不允许外部访问的,私有的

“”"
“”"

公有静态属性:1.派生类访问 2.类内部访问 3.类直接访问
私有静态属性  只有类内部可以访问


公有动态属性
私有动态属性

公有静态方法
私有静态方法


公有普通方法
私有普通方法

“”"
‘’’

class person():
    tz="直立行走"#静态属性
    __wc="厕所"#私有的
    def __init__(self,name):
        self.name=name#动态属性
    def eat(self):#普通方法
        print("吃饭")
    @staticmethod
    def tianxing(self):#静态方法
        print("自私")

‘’’

class person():
    tz="直立行走"#公有动态属性
    __money="私房钱"#私有静态属性
    def pShow(self):#类内部访问
        #print(self.tz)
        print(self.__money)
class student(person):
    def sShow(self):#派生类访问
        #print(self.tz)
        print(self.__money)

‘’’

派生类访问---->成功

s=student()
s.sShow()

类内部访问----->成功

p=person()
s.pShow()

类直接访问---->成功

print(person.tz)

‘’’

派生类访问---->失败

s=student()
#s.sShow()
#AttributeError: type object 'person' has no attribute '__money'

类内部访问----->成功

p=person()
s.pShow()

类直接访问---->失败

#print(person.__money)
#AttributeError: type object 'person' has no attribute '__money'

第二次

class person():
    def __init__(self,name,idCar):
         self.name=name#公有动态属性
         self.__idCar=idCar#私有动态属性
    def pShow(self):#类内部访问
        #print(self.name)
        print(self.__idCar)
class  student(person):
    def sShow(self):#派生类访问
        #print(self.name)
        print(self.__idCar)

‘’’

派生类访问---->成功

s=student("张三")
s.sShow()

类内部访问—>成功

p=person("李四")
p.pShow()

对象访问—>成功

print(p.name)

‘’’

派生类访问---->失败

s=student("张三","123456789098765432")
#s.sShow()

类内部访问—>成功

p=person("李四","9995959595")
p.pShow()

对象访问—>失败

#print(p.__idCar)

第三次

‘’’

class person():
    def eat(self):#公有普通方法
        print("吃饭")
    def pShow(self):#类内部访问
        self.eat()
class student(person):
    def sShow(self):#派生类访问
        self.eat()

派生类访问---->成功

s=student()
s.sShow()

类内部访问---->成功

p=person()
p.pShow()

对象访问---->成功

p.eat()

‘’’

class person():
    def eat(self):#公有普通方法
        print("吃饭")
    def __shouji(self):
        print("手机是私有的")#私有普通方法
    def pShow(self):#类内部访问
        self.__shouji()
class student(person):
    def sShow(self):#派生类访问
        self.__shouji()

派生类访问---->失败

s=student()
#s.sShow()
#AttributeError: 'student' object has no attribute '_student__shouji'

类内部访问---->成功

p=person()
p.pShow()

对象访问---->失败

p.__shouji()
#AttributeError: 'student' object has no attribute '_student__shouji'

第四次

‘’’

class person():
    @staticmethod
    def xz():#公有静态方法
        print("真诚的心")
    def pShow(self):#类内部访问
        self.xz()

class student(person):
    def sShow(self):#派生类访问
        self.xz()

派生类访问—>成功

s = student()
s.sShow()

类内部访问---->成功

p=person()
p.pShow()

类直接访问----->成功

person.xz()

‘’’

class person():
    @staticmethod
    def __xz():#私有静态方法
        print("真诚的心")
    def pShow(self):#类内部访问
        self.__xz()

class student(person):
    def sShow(self):#派生类访问
        self.__xz()

派生类访问---->失败

s = student()
#s.sShow()
#AttributeError: 'student' object has no attribute '_student__xz'

类内部访问----->成功

p=person()
p.pShow()

类直接访问---->失败

#person.__xz()
#AttributeError: 'student' object has no attribute '_student__xz'

第五次

封装

class person():
    #属性:名字,性别,身高,体重
    def __init__(self,name,sex,hight,weight):
        self,__name=name
        self,__sex=sex
        self,__hight=hight
        self,__weight=weight
    #方法:吃饭,睡觉
    def eat(self):
        print("吃饭")
    def sleep(self):
        print("睡觉")
    def show(self):
        print(self.__name,self.__sex)

第六次

创建学生类

class student():
    def __init__(self,name,age,Class,hobbit):
        self.name=name
        self.age=age
        self.Class=Class
        self.hobbit=hobbit
    def show(self):#展示
        print(self.name)
        print("年龄:%d"%(self.age))
        print("就读于:%s"%(self.Class))
        print("爱好:%s"%(self.hobbit))
#测试调用
#s=student("张浩",18,"大数据二班","看书")
#s.show()

创建老师类

class teacher():
    def __init__(self,name,jl,kc,zy):
        self.a=name
        self.b=jl
        self.c=kc
        self.d=zy
    def show(self):
        print(self.a)
        print("教龄:%d"%(self.b))
        print("课程:%s"%(self.c))
        print("专业:%s"%(self.d))

#t=teacher("王老师",1,"python基础","大数据专业")
#t.show()

‘’’

创建密码类

class id():
    def __init__(self,yh,mm):
        self.yh=yh
        self.mm=mm
    def show(self):
        print("请输入用户名:%s"%(self.yh))
        print("请输入密码:%d"%(self.mm))
i=id("admin1",111111)
i.show()
if id("admin1",111111):
    print("请输入新密码:%d"%(123456))
    print("修改密码成功,您的新密码为:123456")
else:
    print("请输入用户名:%s"%("admin"))
    print("请输入密码:%d"%(123456))
    print("用户名和密码不匹配!您没有权限更新管理员信息。")

‘’’

class yhmmgl():#用户密码管理类

"""
   用户名:自己的名字
    密码:手动输入(123456)
    初始化
"""
def __init__(self,name,passwd):
    self.name=name
    self.passwd=passwd
"""

判断是否登录成功

"""
def login(self,loginName,loginPwd):
    if self.name == loginName and self.passwd == loginPwd:
        print("恭喜你登录成功")
        return True
    else:
        print("登录失败")
        return False
"""

修改密码

"""
def updataPwd(self,newPwd):
    self.passwd = newPwd        
"""
展示用户名和密码()
"""
def show(self):
    print("用户名:%s"%self.name)
    print("密码:%s"%self.passwd)

测试

zhangsan=yhmmgl("root","123456")
denglvName=input("请输入登录用户名:")
denglvPwd=input("请输入登录密码:")
a=zhangsan.login(denglvName,denglvPwd)
#print(a)  如果a是ture,就证明登录成功,可以修改密码
if(a):
    newPwd=input("请输入新密码:")
    zhangsan.updataPwd(newPwd)
    #打印用户名和密码
    zhangsan.show()
else:
    print("张三没有登录成功,没办法修改密码")

第七次

‘’’

class Bicycle():
    def __init__(self,run,lc):
       self.run=run
       self.lc=lc
    def show(self):
        print("骑行:%s"%self.run)
        print("骑行了%s"%self.lc+"km")
b=Bicycle("花式骑行","100")
b.show()

‘’’

‘’’

自行车类

class bickle():#自行车类
    def run(self,fz):
        licheng = fz * 18/60
        print("您骑行%d分钟,一共骑行%d公里"%(fz,licheng))

b=bickle()
b.run(8)

‘’’

CUP类:属性(brand品牌,)

class cpu():
    def __init__(self,brand,core,interface):
        self.brand=brand
        self.core=core
        self.interface=interface

class ram():
    def __init__(self,brand,size):
        self.brand=brand
        self.size=size
        
class disk():
    def __init__(self,brand,size):
        self.brand=brand
        self.size=size
class computer():
    count_cpu=0 #主板上没有cpu
    count_ram=1 #新买电脑的内存条(根)
    count_disk=1 #新电脑有一个盘
    def add_cpu(self,cpu,jiekou):
        if cpu.interface == jiekou:
            print("接口一致,添加cpu")
            self.count_cpu +=1
        else:
            print("接口不一致,不能添加cpu")    
    def add_ram(self,ram):
        if ram.size >16:
            print("内存够用,不用添加")
            self.count_cpu +=1
        else:
            print("内存不够用,添加内存")
            self.count_ram +=1            
    def add_disk(self,disk):
        if disk.size > 1: #证明有一个C盘
            print("硬盘够用,不用添加")         
        else:
            self.count_disk +=1
            print("硬盘不够用,添加硬盘")
    def run(self):
        if self.count_cpu >=1 and self.count_disk >=1 and self.count_ram>=1:
            print("电脑成功运行")
        else:
            print("电脑不能运行")

测试

c=computer()
c_cpu=cpu("因特尔",8,"主板")
c.add_cpu(c_cpu,"主板")
c_ram=ram("因特尔",32)
c.add_ram (c_ram)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值