day15 面向对象编程

day 15 面向对象编程

一、认识面向对象编程

做数据分析面相对象 的要求:会使用类和对象就行,即别人提供一个类,你该怎么使用它

编程思想:程序员在面对问题的时候,采用的解决方式就决定编程思想

面向过程:逻辑+算法

例子:计算1~100的和
s = 0

for x in range(1, 101):
s += x
print(s)

函数式编程:逻辑+算法+函数

print(sum(range(1,101)))

面向对象编程:逻辑+算法+函数+类+对象
print(sum(range(1,101)))

二、类和对象

1、类、对象

类:拥有相同功能和相同属性对象的集合
对象:类的实例

2、定义类(创建):用代码来描述创建的类属性、功能的对象集合

语法:
class 类名:
类的说明
类的内容

说明:
class:关键字,固定写法
类名:由程序员自己命名;
要求:是标识符,非关键字;
规范:见名知义,不使用系统函数名、类名和模块名;首字母大写,采用驼峰式命名
dog_name = ‘菜菜’
dogName = 菜菜’(驼峰式)
类的说明:本质就是多行注释
类的内容:描述类的功能、属性
功能:函数
属性:变量

3、 创建对象

"""
语法:
对象 = 类名()   -  创建指定类的对象并且返回
"""
p1 = Person()
p2 = Person()
print(p1)           # <__main__.Person object at 0x7fe868077be0>
print(p2)           # <__main__.Person object at 0x7fe8680a8a90>



if __name__ == '__main__':
    pass

4、方法:定义在类中的函数就是方法,用来描述共同功能

三种方法:对象方法、类方法、静态方法

对象方法
定义:直接定义类中的函数
调用:以’对象.xxx()'的方式调用
特点:参数self不需要传参,用谁调用,self就是谁;self就是当前对象

类方法
定义:定义函数前加装饰器 @classmethod
调用:以’类名.xxx’调用
特点:

静态方法
定义:定义 函数前加装饰器@staticmethod
调用:
特点:


class A:
    """
    没有意义的类
    """
    def func1(self):
        print('这是一个对象方法')


    @classmethod
    def func2(cls):
        print('这是一个类方法')


    @staticmethod
    def func3():
        print('这是一个静态方法')


a1 = A()
a1.func1()


a2 = A()
print(f'a1:{a1},a2:{a2}')

print(f'A:{A}')
A.func2()

A.func3()


5、属性:对象属性;类属性

对象属性
定义:直接定义在类中的变量
使用:‘类.属性名’,通过类使用类属性
应用:属性值不会因为对象不同而不一样就定义成类属性

类属性
定义:以’self.属性名 = 值’的方式定义在
使用:'对象.属性名’的方式使用,通过对使用对象属性
应用:属性值会因为对象不同而不一样的定义成对象属性

补充
魔法方法:类自带的 方法中,以名字

# 案例:定义圆类

class Circle:                   #对象属性
    pi = 3.1415926
def __init__(self):
    self.r = 0

def area(self):
    # self = c1;self = c2
    # 在实现对象方法的功能的时候如果需要兑现属性,通过self来提供
    return Circle.pi * self.r ** 2
c1 = Circle()

# print(c1.r)    # r=0

c1.r = 3         #定义半径长度

c2 = Circle()
c2.r = 5

print(c1.area())
print(c2.area())

class Person:
    def __init__(self):
        self.name = ''
        self.gender = '男'

p1 = Person()
p1.name = '小花'
p1.gender = '女'

#改进,属性为形参
class Person:
    def __init__(self, name, sex):
        self.name = name
        self.gender = sex

p1 = Person('小花','女')
print(p1.name, p1.gender)    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百事不可乐BOOM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值