美文网首页
Day14类和对象

Day14类和对象

作者: Heyjoky | 来源:发表于2018-10-17 18:29 被阅读0次

类的声明

1.什么是类
类就是对用有相同属性和相同功能的对象的集合
对象就是类的实例
类是抽象的,对象是具体的

从生活看类和对象
如果人是一个类,具体的每个人就是对象

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

说明:
class:Python中声明类的关键字
类名:标识符,不能是关键字;使用驼峰命名法,见名知义
驼峰命名法:如果一个名字由多个单词组成,第一个单词首字母小写,后面每个单词首字母大写
PEP8命名规范:如果一个名字由多个单词组成,所有字母小写,单词之间用下划线隔开

(父类列表):继承语法,让声明的类继承括号中的父类,这个结构可以省略,让当前类继承python的基类object
类的说明文档:注释,对类进行说明
类的内容:包含属性和方法
方法:声明在类中的函数

声明类

class Person:
    def eat(self):
        print('吃饭饭')

3.对象的声明
格式:
对象名 = 类名()
构造方法
对象名 --> 变量名
类名 --> 必须是声明过的类

    p1 = Person()
    p2 = Person()

对象方法

1.类的内容包括属性和方法,方法分为对象方法,类方法,静态方法

对象方法:直接声明在类中的函数就是对象方法,对象方法都有一个默认参数self,需要通过对象来调用
self不需要传参数,系统会自动将当前参数传给self

当前对象:谁调用当前对象的方法,self就指向谁,self就是当前类的对象,类的对象能做的,self都能做

class Person:
'''人类'''

# 对象方法eat
    def eat(self):
        print('chifan')

构造方法和init方法

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

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

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

class Dog:
    def __init__(self):
        print(self)
        print('')

3.带其他参数的构造方法
init方法里面的参数要通过构造方法来传

class Person
    def __init__(self,name,age):
            print(name,age)

p1 = Person('小红',20)

对象的属性

类的内容包函属性和方法,属性又分为对象属性和类的字段

属性:用来在类中保存数据的变量
对象属性:属性的值会因为对象的不同而不同,这种属性就需要声明成对象属性,如人的姓名等

1.对象属性的声明
a.必须声明在init方法中
b.声明格式:self.属性 = 初值

2.使用对象属性:self.属性 = 初值
声明一个人类,要求有名字年龄和性别属性
class Person:
def init(self,name1,age1,sex1):
self.name = name1
self.age = age1
self.sex = sex1
p1 = Person('张三',18,'男')
print(p1.name)
对象属性的增删改查
class Student:
def init(self,name,age = 18,stu_id = 12):
self.name = name
self.age = age
self.stu_id = stu_id

1.查(获取对象属性的值)

方法1:对象.属性 -->获取属性值,若不存在会报错

print(stu1.name)

方法2:getattr(对象,属性,默认值) -->
获取属性的默认值,若果设置了默认值,当属性不存在的时候,不会报错,若未设置默认值,还是会报错

print(getattr(stu1,'name2','张三'))

方法3.对象.getattribute(属性名)-->获取指定的属性值,属性不存在会报错

2.增(给对象增加属性)

方法1.对象.属性 = 值(属性不存在)
注意:给对象添加属性,只能添加到当前对象中,不会影响到当前类其他对象
方法2.setattr(对象,属性名,属性值)
对象.setattribute(属性名)-->

3.修改

stu3.name = '李四'
print(stu1.name)

setattr(stu3,'name','hehe')
print(stu3.name)

4.删除(删除对象属性)

注意:删除只删除当前对象的属性,对当前类其他属性没有影响
方法1.
del 对象.属性
方法2.
delsttr(对象,属性名)
方法3.
对象.gdelattribute(属性名)-->删除指定的属性值,属性不存在会报错

对象的应用

class Student:
    def __init__(self,name,age = 18,stu_id = 12):
        self.name = name
        self.age = age
        self.stu_id = stu_id

stu1 = Student('小明')

1.查(获取对象属性的值)
方法1:对象.属性 -->获取属性值,若不存在会报错

print(stu1.name)

方法2:getattr(对象,属性,默认值) -->
获取属性的默认值,若果设置了默认值,当属性不存在的时候,不会报错,若未设置默认值,还是会报错

print(getattr(stu1,'name2','张三'))

方法3.对象.getattribute(属性名)-->获取指定的属性值,属性不存在会报错

2.增(给对象增加属性)

方法1.对象.属性 = 值(属性不存在)
注意:给对象添加属性,只能添加到当前对象中,不会影响到当前类其他对象
方法2.setattr(对象,属性名,属性值)
对象.setattribute(属性名)-->

3.修改
stu3.name = '李四'
print(stu1.name)

 setattr(stu3,'name','hehe')
print(stu3.name)

4.删除(删除对象属性)

注意:删除只删除当前对象的属性,对当前类其他属性没有影响
方法1.
del 对象.属性
方法2.
delsttr(对象,属性名)
方法3.
对象.gdelattribute(属性名)-->删除指定的属性值,属性不存在会报错

slots魔法

属性: 对象属性,类的字段
1.类的字段:声明在类里面,函数外面的字段,使用的时候要通过类来使用
应用:类名.字段
2.__slots--:用来约束当前类的对象的属性有哪些

class Dog:
    num = 10
    __slots__ = ('color','name','type')
    def __init__(self,color,name,type):
        self.color =color
        self.name = name
        self.type = type

内置类属性

class Person:
    '''人类'''
    # 类的字段
    num = 61

    # 对象属性
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

    #对象方法
    def run(self):
        print('%s在跑'% self.name)

p1 = Person('小明',18,'男')

1.name

类.name -->获取当前类的名字

print(Person.__name__,type(Person.__name__))

2.doc
类.doc -->获取类的说明文档

print(Person.__doc__)

3.class

对象.class -->获取对象的类,相当于直接使用当前类

my_class = p1.__class__  # my_class相当于一个类
print(p1.__class__)

4.dict

类.dict -->获取当前类所有类的字段和其对应的值,以字典的形式返回
对象.dict --> 获取当前对象所有的属性和其对应的值,以字典的形式返回

print(Person.__dict__)

5.module

类.module -->获取当前类所在模块名

print(Person.__module__)

6.base

类.base -->获取当前类的父类,返回一个元组,元组的元素是一个类

相关文章

  • day14 类和对象

      几天主要学习了python中的类与对象的基础知识。   一、类的声明   类:对拥有相同功能(方法)和相同属性...

  • day14 类和对象

    一、面向对象编辑 编程思想:1.面向过程编程 ---> 算法,逻辑(数学逻辑) 2.函数式编程 ---> 函数,...

  • Day14类和对象

    类的声明 1.什么是类类就是对用有相同属性和相同功能的对象的集合对象就是类的实例类是抽象的,对象是具体的 从生活看...

  • Day14类和对象

    1.面向对象编程 编程思想:1.面向过程编程 ---> 算法,逻辑(数学逻辑思维,一步一步的) 2.函数式编程 -...

  • day14 类和对象

    1.类中的方法 类中的方法分为:对象方法、类方法、静态方法 1.对象方法 a.直接声明在类中 b.有默认参数sel...

  • day14 类和对象

    类方法和静态方法 类中的方法分为:对象方法, 类方法和静态方法 1.对象方法 a.直接声明在类中b.有默认参数se...

  • Day14—类和对象1

    1 类 1.1 类的简介 1.理论上的定义类:就是拥有相同功能和相同属性的对象的集合对象:类的实例 2.从生活角度...

  • 10.17 day14 类和对象

    一.面向对象编程 编程思想:1.面向过程编程 ---> 算法,逻辑(数学逻辑) 2.函数式编程 ---> 函数,模...

  • day14 - 类和对象(作业)

    0.定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]方法: a. 获取学生的姓...

  • day14 总结 - 类和对象

    01.recode 1.类和对象的概念 类:拥有相同的功能和相同属性的对象的集合对象:类的实例 2.类的声明 cl...

网友评论

      本文标题:Day14类和对象

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