19.5.6笔记and作业

博客主要对比了三种方法,介绍了类属性和对象属性的区别,类属性供类使用,对象属性供对象使用。还阐述了继承,包括子类调用父类方法、多继承、钻石继承等情况,以及重载、私有属性调用等内容,最后提及了多态并布置了作业。

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

三种方法的对比

class Stu():
    count=0
    def __init__(self,name,age):
        self.name=name
        self.age=age
        Stu.count+=1
    def showSelf(self):#对象方法(实例方法),第一个参数是对象本身,只能被具体对象使用
        print(self.name,self.age)
    @classmethod
    def jishu(cls):#类方法,第一个参数是类本身,通过类直接访问,也能通过对象访问
        print(cls.count)
    @staticmethod#静态方法,跟类和对象无太大关系,能通过类直接访问
    def jisuan(a,b):
        c=a+b
        print(c)
zs=Stu('张三',18)
ls=Stu('李四',19)
zs.showSelf()
zs.jishu()
ls.showSelf()
ls.jishu()
Stu.jisuan(2,3)

类属性和对象属性的区别,类属性供整个类使用,对象属性供对象使用

封装:__age(双下划线),就是私有化,只能内部使用
class A():
    __count=0
    def __init__(self,name,age):
        self.name=name
        self.__age=age
    def getAge(self):
        return  self.__age
zs=A('张三',19)
print(zs.name)
print(zs.getAge())
print(zs.__age)#不能访问,只能内部使用

eg:

class A():
    def getAge(self):
        return self.__age
    def setAge(self,age):
        if age>120 or age<0:
            print('年龄设置问题')
            self.__age=0
        else:
            self.__age=age
zs=A()
zs.setAge(19)
print(zs.getAge())##输出19
ls=A()
ls.setAge(130)
print(ls.getAge())

eg:

 class A():
        def setAge(self,age):
            self.__age=age
        def getAge(self):
            return self.__age
    a=A()
    a.setAge(19)
    print(a.getAge())##19
    a.__age=29##重新赋值了,没有调用了封装
    print(a.__age)###29
    print(a.getAge())#19
    print(a._A__age)#19,访问私有属性
    print(a.__dict__)#生成字典

继承:子类可以调用父类的方法

class People():
    def chifan(self):
        print('我在吃饭')
class Shuijiao(People):
    def shuijiao(self):
        print('我在睡觉')
zs=Shuijiao()
zs.shuijiao()#
zs.chifan()#调用父类的方法

调用继承例子

class Animal():
    def __init__(self,name,gender,age):
        self.name=name
        self.age=age
        self.gender=gender
    def chifan(self):
        print(self.name,'吃饭')
    def shuijiao(self):
        print(self.name,'睡觉')
    def jiao(self):#overriding重载,父类被重载
        print('哈哈')
class Cat(Animal):
    def jiao(self):
        print('喵喵')
class Dog(Animal):
    def jiao(self):
        print('汪汪')
d=Dog('旺财','公',3)
d.chifan()
d.shuijiao()
d.jiao()#当子类和父类有重名方法时,优先使用子类的方法
print(Dog.__bases__)#查看Dog继承的父类,如果一个类没有继承任何类,默认继承object
c=Cat('波斯猫','母',2)
c.chifan()
c.shuijiao()
c.jiao()

#重载

class Animal():
    def __init__(self,name,gender,age):
        self.name=name
        self.age=age
        self.gender=gender
    def chifan(self):
        print(self.name,'吃饭')
    def shuijiao(self):
        print(self.name,'睡觉')
    def jiao(self):#overriding重载,父类被重载
        print('哈哈')
class Cat(Animal):
    def jiao(self):
        super().jiao()##继承父类的jiao方法
        print('喵喵')
class Dog(Animal):
    def jiao(self):
        super().jiao()##继承父类的jiao方法
        print('汪汪')
d=Dog('旺财','公',3)
d.chifan()
d.shuijiao()
d.jiao()#当子类和父类有重名方法时,优先使用子类的方法
print(Dog.__bases__)#查看Dog继承的父类,如果一个类没有继承任何类,默认继承object
c=Cat('波斯猫','母',2)
c.chifan()
c.shuijiao()
c.jiao()

eg:

class Human():
    def __init__(self,name,sex):
        self.name=name
        self.sex=sex
    def showSelf(self):
        print(self.name,self.sex)
class Man(Human):
    def __init__(self,name,sex,salary):
        super().__init__(name,sex)#继承父类的init
        self.salary=salary
    def showSelf(self):
        super().showSelf()#继承父类的showSelf
        print(self.salary)
class Women(Human):
    def __init__(self,name,sex,huafei):
        super().__init__(name,sex)#继承父类的init
        self.huafei=huafei
    def showSelf(self):
        super().showSelf()#继承父类的showSelf
        print(self.huafei)

zs=Man('张三','男',10000)
ls=Women('李四','女',2000)
zs.showSelf()
ls.showSelf()

eg:

class A():
    def __init__(self,x):
        self.x=x
class B(A):
    def __init__(self,x,y):#当B中有init时,则调用B中的init,当B中没有时,则调用A中的
        self.x=x
        self.y=y
    def showSelf(self):
        print(self.x)
b=B(1,2)
b.showSelf()

eg:

class A():
    def __init__(self,x,y):
        self.x=x
        self.y=y
class B(A):
    def __init__(self,x,y,z):
        super().__init__(x,y)
        self.z=z
    def showSelf(self):
        print(self.x)
b=B(1,2,3)
print(b.x,b.y,b.z)

eg:

class A():
    count=0
class B():
    pass
print(A.count)
A.hello=120#外属性赋值,如果类属性中含有,则改变值,没有的话则赋值
print(A.hello)

#私有属性

class A():
    __x=100
    def __init__(self,name,age):
        self.name=name
        self.__age=age
class B(A):
    def __init__(self,name,age,sex):
        super().__init__(name,age)
        self.sex=sex
    def showSelf(self):
        print(self.name,self.__age,self.sex)
b=B('张三',19,'男')
b.showSelf()#无法输出,因为是私有属性
print(B.__x)#无法输出,是私有属性

调用父类的num

class A():
    num=3
class B(A):
    num=4
b=B()
print(B.num)#子类中有num,则用自己的,输出4
print(super(B,b).num)#调用父类的num

多继承
eg1

 class A():
        def t1(self):
            print('t1')
    class B():
        def b1(self):
            print('b1')
    class C(A,B):
        def c1(self):
            print('c1')
    c=C()
    c.t1()
    c.c1()
    c.b1()

eg2

class A():
    def t1(self):
        print('t1')
    def t2(self):
        print('t2')
class B():
    def t1(self):
        print('b1')
    def t2(self):
        print('b2')
class C(A,B):
    def c3(self):
        print('c3')
c=C()
c.t1()#输出为t1,#当父类有多个相同方法或者属性时,调用顺序为C,A,B,跟父类顺序有关
print(C.mro())#顺序为C-A-B-object

eg3:

class B():
    def __init__(self):
        print('B开始')
        print('B结束')
class C():
    def __init__(self):
        print('C开始')
        print('C结束')
class D(B,C):
    def __init__(self):
        print('D开始')
        super().__init__()#只继承了一个B父类
        print('D结束')
d=D()#D开始,B开始,B结束,D结束

钻石继承

class A():
    def __init__(self):
        print('A开始')
        print('A结束')
class B(A):
    def __init__(self):
        print('B开始')
        super().__init__()
        print('B结束')
class C(A):
    def __init__(self):
        print('C开始')
        super().__init__()
        print('C结束')
class D(B,C):
    def __init__(self):
        print('D开始')
        super().__init__()#广度为D-B-C-A-object
        print('D结束')
d=D()

eg4:

class A():
    def func(self):
        print('A')
class B(A):
    def func(self):
        super().func()
        print('B')
class C(A):
    def func(self):
        super().func()
        print('C')
class D(B,C):
    def func(self):
        super().func()
        print('D')
d=D()##类的顺序应该是D-B-C-A,结果为A-C-B-D
d.func()

多态

class Dog():
    def jiao(self):
        print('汪汪')
class Cat():
    def jiao(self):
        print('喵喵')
class Pig():
    def jiao(self):
        print('哼哼')
def han(x):
    x.jiao()
d=Dog()
c=Cat()
p=Pig()
a=[]
a.append(d)
a.append(c)
a.append(p)
for x in a:
    han(x)

多态

class Pay():
    def pay(self):
        pass
class ALpay(Pay):
    def pay(self,money):
        print('阿里支付',money)
class WeiXinpay(Pay):
    def pay(self,money):
        print('微信支付',money)
class Person():
    def pay(self,obj,money):
        obj.pay(money)

w=WeiXinpay()
a=ALpay()
zs=Person()
zs.pay(a,100)##ALpay().pay(100)
zs.pay(w,200)

作业

class Dog(object):
    def __init__(self,name):
        self.name=name
    def game(self):
        print('%s蹦蹦跳跳的玩耍。。。'%self.name)
class XiaoTianDog(Dog):
    def game(self):
        print('%s飞到天上玩耍'%self.name)
class Person(object):
    def __init__(self,name):
        self.name=name
    def game_with_dog(self,dog):
        print('%s和%s快乐的玩耍。。。。'%(self.name,dog.name))
        dog.game()
xt_dog=XiaoTianDog('哮天犬')
els=Person('二郎神')
els.game_with_dog(xt_dog)
内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构和技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用和技术四大架构的内容和关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)和领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级和专业级价值流,细化业务能力、流程和对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致和高效使用。应用架构方面,提出了分层解耦和服务化的设计原则,以提高灵活性和响应速度。最后,技术架构部分围绕技术框架、组件、平台和部署节点进行了详细设计,确保技术架构的稳定性和扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理和业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业和组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理和应用开发,确保数据的一致性和应用的高效性;③为技术选型和系统部署提供科学依据,确保技术架构的稳定性和扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解和实践,重点关注各架构模块之间的关联和协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。 本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了一种快速ICA实现算法一FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想和方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进一步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验和应用,我们发现ICA在提取信号特征、降噪和信号分离等方面具有广泛的潜力和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值