Day 16 认识类和对象

Day 16 认识类和对象

1.什么是类?

1.什么是类什么是对象

类:就是拥有相同属性和相同功能的对象的集合(抽象的)

对象:对象就是类的实例(类的具体表现)

生活的角度来看:衣服、人、文具、电脑都是类
如果人是类,余婷就是对象、骆昊也是对象
如果电脑是类,我桌上的这台电脑就是对象
如果车是类,楼下那辆奔驰是对象

2.定义类

用代码描述这个类是拥有哪些相同属性和哪些相同功能的对象的集合

class 类名:
     类的说明文档
     类的内容

说明:
class - 关键字;固定写法
类名 — 程序员自己命名
要求:标识符,不是关键字
规范:驼峰式命名首字母大写;见名知义(看见名字大概知道是什么类);不使用系统命名
类的说明文档 - 上个双引号开头和结尾的注释
类的内容 - 主要包含类中的属性和方法
属性分为:类属性(字段)和对象属性
方法分为:对象/实例方法、类方法和静态方法
注:方法就是定义在类中的函数

3.创建对象

语法:对象 = 类()
stu1 = Student()
print(stu1)

方法就是定义在类中的函数,分为三类:对象方法、类方法、静态方法

1.对象方法

定义:直接定义在类中的函数就是对象方法

怎么调用:要通过对象来调用 – 对象.方法名()

特点:对象方法的第一个参数,在调用的时候不需要传参,系统会自动将当前对象传给self(谁调用就指向谁)

class Person
    # eat就是对象方法,self在这里作为对象方法的第一个参数,在调用的时候不需要传参,系统会自动将当前对象传给self(谁调用就指向谁)
    def eat(self):
        print(f'self:{self}')
        print('吃饭')
    # sleep是对象方法    
    def sleep(self):
        print('睡觉')

4. python的类有一个特殊的对象方法__init__

补充:魔法方法–方法名以__开头并且__结尾,所有的魔法方法都不需要程序员调用,系统会自动调用

1)创建对象的时候会自动调用__init__方法

2)创建对象的时候需不需要参数,需要几个参数由类中的__init__方法决定

class Dog:
    def __init__(self):
        print('init被调用')
        
dog1 = Dog()
dog2 = Dog()
class Cat:
    def __init__(self,name,age=3):
        
        print('猫的init')
c1 = Cat()  # 直接执行会报错,name不是第一个参数需要传参
c2 = Cat('小明')   # 猫的init 小明(因为给name传参了不会报错)
c3 = Cat(name = '哈哈',age = 2)  # 正常传参

2.属性

类中的数据信息就是属性,动作信息就是方法

属性分为类属性(字段)和对象属性

1.类属性

怎么定义:直接定义在类中的变量就是类属性

怎么使用:通过类使用 - 类.类属性

什么时候用:属性值不会因为对象不同而不一样,例如元的圆周率

class Person:
    a = 10
    b = 'asd'
    # a,b是类属性
print(Person.a,Person.b)   # 通过类使用
print(Person.a*2)      # 100

2.对象属性

怎么定义:以 ‘self.属性名=值’ 的形式定义在类中__init__方法里面

怎么使用:通过对象使用 – 对象.属性

什么时候用:属性值会因为对象不同而不一样,就定义成对象属性

class Person:
    a = 10
    b = 'abc'
    
    def __init__(self):
        # name、age、gender就是对象属性
        self.name = '小明'
        self.age = 18
        self.gender = '男'

# 使用对象属性
p1 = Person()
print(p1.name,p1.age,p1.gender)   # 小明 18 男
class Student:
    def __init__(self,name1,tell = '110'):
        # 下面三行三种方法
        self.name = name1 # 每次创建对象的时候都必须给name属性赋值
        self.study_id = '000' # 每次创建学生对象的时候study_id的值都是'000',且创建的值不可变
        self.tel =tell # 每次创建对象的时候可以选择性的tel属性赋值或者不赋值
        
stu1 = Student('小明')
# 创建stu1
print(stu1.name)
stu2 = Student('小红')
print(stu2.name)

练习:定义一个矩形类,拥有属性:长和宽,拥有方法:计算周长和面积

class Rect:
    def __init__(self, long1=10, width1=20):
        self.long = long1
        self.width = width1

    def area(self):
        print(f'面积:{self.long * self.width}')

    def perimeter(self):
        print(f'周长:{(self.width +self.long)*2 }')
r1 = Rect(20,30)
r2 = Rect(10,30)
r3 = Rect()
r2.area()
r1.perimeter()
r3.area()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值