美文网首页python从入门到放弃
python-15-面向对象基础1

python-15-面向对象基础1

作者: 楠木cral | 来源:发表于2018-10-25 17:38 被阅读0次

    一、类和对象
    1.什么是类和对象
    类 - 是拥有相同属性和相同功能的对象的集合(抽象的)
    对象 - 就是类的实例(具体的)

    从生活的角度来看类和对象
    如果说人是一个类, 余婷就是一个对象,骆昊也是一个对象
    如果说电脑是一个类,我桌上的这台mac就是一个对象
    如果水杯是一个类,具体的某个水杯才是这个类的对象
    如果车是一个类,汽车、自行车、摩托车等这些是这个类的子类, 具体的某一辆车才是对象

    2.类的声明
    格式:
    class 类名(父类列表):
    类的说明文档
    类的内容

    说明:
    class -> python中声明类的关键字
    类名 -> 标识符,不能是关键字;类名使用驼峰式命名,并且首字母大写;见名知义
    驼峰式命名:如果一个名字由多个单词组成,第一个单词首字母小写,后面每个单词首字母大写
    userName
    PEP8命名规范:如果一个名字由多个单词组成,所有字母小写,多个单词之间用下划线隔开
    user_name
    (父类列表) -> 继承语法,让声明的类继承括号中的父类。这个结构可以省略,让当前类继承python的基类:object
    : -> 固定结构
    类的说明文档 -> 注释,对类进行说明。
    类的内容 -> 包含属性(变量)和方法(函数)
    方法:声明在类中的函数

    声明Person类,吃饭和睡觉

    class Person:
        """人类"""
    
        def eat(self):
            print('吃饭!')
    
        def sleep(self):
            print('睡觉!')
    

    3.对象的声明
    格式:
    对象名 = 类名()

    对象名 -> 变量名
    类名 -> 必须是声明过的类
    声明了Perosn类的对象p1

    p1 = Person()
    p2 = Person()
    

    二、属性和方法
    1.类的内容包含属性和方法, 方法分为对象方法、类方法和静态方法
    对象方法:直接声明在类中的函数就是对象方法。对象方法都有一个默认参数self, 通过对象来调用
    对象方法的调用: 对象.方法名()。调用对象方法的时候,不需要给默认参数self传参。
    系统会自动将当前对象传递给self 。
    self: 谁调用当前的对象方法,self就指向谁。self就是当前类的对象,类的对象能做的事情,self都能做

    # 声明类
    class Person:
        """人类"""
    
        # 对象方法eat
        def eat(self, name):
            # self = p1, name = '小明'
            print('self:',self)
            print('吃饭!')
            self.sleep()
    
        def sleep(self):
            print('s_self', self)
            print('睡觉')
    
    # 声明对象
    p1 = Person()
    print('p1:', p1)
    p1.eat('小明')
    # p1.sleep()
    
    p2 = Person()
    print('p2:', p2)
    p2.eat('小红')
    

    三、构造函数
    1.构造方法
    构造方法就是函数名和类名一样的方法,作用是用来创建对象的。
    声明类的时候,系统会自动为这个类创建对应构造方法

    创建对象的过程:调用构造方法在内存中开辟空间创建对象,并且会自动调用init方法去对这个对象进行初始化,
    最后将创建好的对象的地址返回

    2.init方法
    对象方法
    不需要手动调用,创建完对象后,会被自动调用

    class Dog:
        """🐶类"""
        def __init__(self):
            print(self)
            print('init方法')
    
    dog1 = Dog()
    print(dog1)
    
    dog2 = Dog()
    

    3.带参其他参数的init方法
    init方法的参数要通过构造方法来传。(构造方法的实参,会传递给init方法的形参)

    class Person:
        def __init__(self, name='', age=0):
            print(name, age)
    
    p1 = Person('小红', 20)
    p2 = Person('小明')
    p3 = Person(age=10)
    
    if __name__ == '__main__':
        pass
    

    相关文章

      网友评论

        本文标题:python-15-面向对象基础1

        本文链接:https://www.haomeiwen.com/subject/efectqtx.html