06-python类与对象

python中的类和对象:
类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
实例化:创建一个类的实例,类的具体对象。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法
方法:类中定义的函数。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量
__init__.py文件用于初始化类的实例化的时候会执行__init__函数
类的定义:object是类的鼻祖,基类,提供一些基础方法,定义的类的时候需要使用到可用的进行继承

对象:类实例化的一个产物
实例:真实存在的案列
实例化:类创建不同对象的过程,称为实例化
方法:类中定义函数,一般称为方法和实例化方法
类变量:定义类中且在函数体之外,称为类变量
self:表示的就是对象本身

类方法
1.实例方法:有self参数的方法称为实例方法,实例是可以调用,类不能调用
2.静态方法(也属于装饰器):既不属于类也不属于实例,并不具有任何意义,提供实例或者实例化方法的使用
3.类方法:通过装饰生成@classmethod用于修饰类,可以被类和实例调用
class People(object):                #定义一个类,类的名字名叫People,一般类的首字母是大写
    hand=1                     #类变量,属性,可以有可以没有(类可以调用变量)
    def __init__(self,hair):     #构造函数,用于初始化类的实例化的时候会执行(相当于一个限制条件,如果有参数必须传参才能调用下面的方法,否则报错,如果没有参数可以不用传参)
        self.hair=hair          #实例变量(类不能调用实例变量)
    def run(self):              #函数,方法,实例化方法
        self.func1()
        self.score()            #类方法可以调用装饰器里面的方法
        self.color()             #实例可以调用实例方法
        print('我会跑')
    def color(self):
        print('粉红色')
    def talk(self):
        print('我会说话')
    @classmethod                  #@称为装饰器,修饰类,不改变原有的代码或者功能前提下新增一些功能或者方法
    def score(cls):              #cls参数是类的方法,可以被类和实例调用
        print('我的成绩')
        # cls.run()                 #不能调用类里面的实例方法只能被类调用或者类里面的实例方法调用
    @classmethod
    def func(cls):
        print('修饰类')
    @staticmethod                 #静态方法
    def func1():                   #可以供类和实例方法使用,可以被类和实例调用
        print('普通函数')
lisi=People('dcsd')              #有构造函数设置实例变量时,实例化对象时必须要传参数值,否则报错缺失参数
lisi.run()
lisi.talk()
People.run()                  #报错,类不能调用实例方法,因为类不是对象
People().run()
People().hand                   #没有结果输出,需要打印结果
print(People().hand)              #输出结果1
lisi.score()
lisi.func()
lisi.func1()                 #静态方法可以直接被对象调用
People.score()                #score()修饰类的,类方法,可以被类直接调用的
People.func1()               #静态方法可以被类直接调用

类的三大特性:封装、继承、多态
1.封装
class   Dcs():
    def __init__(self):
        pass                           #pass占位符
    def func1(self):
        pass
    def func2(self):
        pass
Dcs().func1()
2.继承
1.继承:类的继承是面向对象程序设计的一个重要思想,继承时子类可以继承父类的内容,包括变量和函数
2.在继承中一个类被另外一个类继承,这个类称之为父类也叫基类,则另外一个类则为子类也称之为派生类
3.父类不能调用子类的实例方法
class   Father():
    def smoke(self):
        print('我会抽烟')
    def drink(self):
        print('我会喝酒')
    def func1(self):
        print('喜欢学习')

class Son(Father):
    def func2(self):
        self.smoke()
        print('喜欢运动')

a=Son()
a.smoke()
a.drink()               #对象调用父类的方法
a.func2()

b=Father()
b.func2()                #报错,父类不能调用子类的实例方法

3.多态
1.多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象调用相同的方法,执行产生不同的结果
2.一个对象的属性和行为不是由他所继承的父类决定,而是由其本身包含的属性和方法决定的
class   Animal():
    def talk(self):
        print('欢迎来到动物世界')
class   Dog(Animal):
    def talk(self):
        print('旺旺旺')
class   Cat(Animal):
    def talk(self):
        print('喵喵')

a=Dog()
b=Cat()
a.talk()
b.talk()
d=Animal()
d.talk()

posted @ 2023-03-27 21:08  jormen  阅读(30)  评论(0编辑  收藏  举报