面向对象基础

day17-面向对象作业 定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积 class Rectangle: def __init__(self, length, width): self.length = length self.width = width def perimeter(self): result = (self.width+self.length)*2 print("该矩形的周长为:%s" % result) .. 阅读详情

面向对象基本

编程思想

1.面向过程编程(穷人思想) - 逻辑+基本语法

print(10 + 20)

2.函数式编程(小资思想) - 函数+逻辑+基本语法

sum((10, 20))


def sum1(num1, num2):
    return num2 + num1

3.面向对象编程(富豪思想)- 类和对象 + 函数+逻辑+基本语法

类和对象

1.什么是类,什么是对象

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

人类: 有名字、有年龄、有性别、有肤色,会说话,能思考,可以睡觉

class Person:
    def __init__(self):
        self.name = ''
        self.age = 0
        self.sex = '男'
        self.color = '黄'

    def speak(self):
        print('说话')

    def think(self):
        print('思考')

    def sleep(self):
        print('睡觉')
  1. 定义类(创建类)

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

说明:
类名 - 第一个字母大写,单词采用驼峰式命名(单词之间首字母大写)
类的内容 - 描述当前这个类是拥有哪些共同属性(变量)和哪些共同功能(函数)的对象的集合
包括属性和方法两个部分;
属性:对象属性和类属性两种
方法:对象方法、类方法、静态方法三种
方法: 定义在类中的函数就叫方法

class Dog:
    """狗类"""
    def cry_out(self):
        print('汪汪汪!')
  1. 创建对象

语法:
对象 = 类名()

dog = Dog()

对象方法

class 类名:
类属性
对象属性
对象方法
类方法
静态方法

1.对象方法

怎么定义:直接在类中定义函数
怎么调用:通过’对象.'的形式来调用
特点:有一个自带的参数self,这个参数在调用的时候不用传参,因为系统会自动将当前对象传self(谁调用self就指向谁)

class Student:
    def study(self, subject):
        # self = stu
        print('self:', self)
        print('学习!', subject)


stu = Student()
print('stu:', stu)
stu.study('Python')

构造方法和初始化方法

1.构造方法

方法名和类名一样并且是用来创建对象的方法就叫构造方法。
python中在定义类的时候,系统会自动帮我创建好这个类的构造方法。

2.初始化方法 - _init_

  1. 当调用构造方法创建对象的时候,系统会自动调用这个类的__init__方法
  2. 创建对象的时候构造方法需不需要参数需要几个,参数类中的__init__方法除了self以外有没有额外的参数有几个
class Person:
    def __init__(self):
        print('self:', self)
        print('初始化')


p1 = Person()     # 创建一个新的Person对象; Person对象.__init__(); 返回Person对象
print('p1:', p1)

class Dog:
    def __init__(self, x, y):
        print('狗的初始化:', x, y)


dog1 = Dog(10, 20)

属性

1.属性

属性分为类属性和对象属性两种
1)类属性(字段)
怎么定义:直接定义在类中的变量就是类属性
怎么使用:通过’类.'的形式来使用
什么时候用:不会因为对象不同而不一样的属性就需要定义成类属性,例如:圆类中的圆周率

2)对象属性

怎么定义:以 ‘self.属性名=值’ 的形式定义在 __init__方法中。
怎么使用:通过’对象.'的形式来使用
什么时候用:会因为对象不同而不一样的属性就需要定义成对象属性:例如:人类的姓名、年龄、性别;圆的半径

class Person:
    # a和num是类属性
    a = 10
    num = 61

    def __init__(self):
        # name、age、gender是对象属性
        self.name = '张三'
        self.age = 18
        self.gender = '男'


print(Person.a)

p1 = Person()
print(p1.name, p1.age, p1.gender)
  1. 对象属性默认的值赋值方式
    1)给一个固定的默认值:用于对于这个类来讲,绝大部分对象对应的这个属性值都是同一个值
    2)给一个没有默认值的参数
    3)给一个有默认值的参数
class Dog:
    def __init__(self, name, breed='土狗', color='白色'):
        self.name = name
        self.age = 2
        self.breed = breed
        self.color = color

    # __repr__方法的返回值是什么,打印Dog对象的时候就打印什么。返回值必须是字符串
    def __repr__(self):
        # 打印谁self就指向谁
        # self=dog1
        return f'name:{self.name}, age:{self.age}, breed:{self.breed}, color:{self.color}'


dog1 = Dog('大黄', color='黄色')
print(dog1)    # print(dog1.__repr__())

dog2 = Dog('花花', '泰迪', '黄色')
dog2.age = 3
print(dog2)

方法

  1. 方法 - 类中的函数

1)对象方法
怎么定义:直接定义在类中的函数
怎么调用:通过对象来调用
特点:自带参数self,调用的时候self不需要传参,系统会自动将当前对象传self(谁调用指向谁)
什么时候用:如果实现函数的功能需要对象属性就定义成对象方法

2)类方法
怎么定义:在类中定义函数前加装饰:@classmethod
怎么调用:通过类来调用
特点:自带参数cls,调用的时候cls不需要传参,系统会自动将当前类传给cls
什么时候用:实现函数功能的时候在不需要对象属性的前提下需要类,就定义成类方法

3)静态方法
怎么定义:在类中定义函数前加装饰:@staticmethod
怎么调用:通过类来调用
特点:没有默认参数
什么时候用:实现函数的功能既不需要对象也不需要类

class Circle:
    pi = 3.1415926

    def __init__(self, r):
        self.r = r

    def area(self):
        # self = c1; self=c2
        return self.r ** 2 * Circle.pi    # c1.r ** 2 * 3.2415926

    @classmethod
    def show_pi(cls):
        print('圆周率:', cls.pi)

    @classmethod
    def create_circles(cls, count):
        circles = []
        for _ in range(count):
            circles.append(cls(1))
        return circles

    @staticmethod
    def message():
        print('静态方法', Circle.pi)


c1 = Circle(10)
print(c1.r)
print(c1.area())

c2 = Circle(1)
print(c2.area())

Circle.show_pi()
print(Circle)

print(Circle.create_circles(4))

Circle.message()

作业

  1. 定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积

    class Rectangle:
        def __init__(self, lenth, width):
            self.lenth = lenth
            self.width = width
    
        def perimeter(self):
            return (self.lenth+self.width)*2
    
        def area(self):
            return self.lenth*self.width = width
    
  2. 定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离

    class Point:
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
        def distance(self, obj):
            return ((self.x-obj.x)**2 + (self.y-obj.y)**2)**(1/2)
    
    point = Point(3, 4)
    point1 = Point(0, 0)
    print(point.distance(point1))
    
  3. 定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切

    class Circle:
        pi = 3.14
        def __init__(self, r, x, y):
            self.r = r
            self.x = x
            self.y = y
    
        def perimeter(self):
            return 2*Circle.pi*self.r
    
        def area(self):
            return Circle.pi*(self.r**2)
    
        def is_Circumscribe(self, ojb):
            result = ((self.x-ojb.x)**2+(self.y-ojb.y)**2)**(1/2)
            if result == self.r + ojb.r:
                print('两圆外切')
            else:
                print('两圆不外切')
    
    circle1 = Circle(1, 0, 0)
    circle2 = Circle(4, 3, 4)
    circle1.is_Circumscribe(circle2)
    
  4. 定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度

    class Line:
        def __init__(self, star, end):
            self.star = star
            self.end = end
    
        def lenth(self):
            return abs(self.end - self.star)
    
    line1 = Line(1, 2)
    print(line1.lenth())
    
  5. 定义一个狗类和一个人类:

    狗拥有属性:姓名、性别和品种 拥有方法:叫唤

    人类拥有属性:姓名、年龄、狗 拥有方法:遛狗

    class Person:
        def __init__(self, name, age, dog_obj):
            self.name = name
            self.age = age
            self.dog = dog_obj
    
        def walk_dog(self):
            print('遛',self.dog.name)
    
    dog1 = Dog('旺财','公','柴犬')
    person1 = Person('刘颖', 18, dog1)
    
    dog1.call_out()
    person1.walk_dog()
    
【基础篇】C#基础知识——面向对象 【基础篇】C#基础知识——面向对象 第一章 C#基础知识——入门 第二章 C#基础知识——面向对象 文章目录【基础篇】C#基础知识——面向对象前言一、C#面向对象的特性二、命名空间2.1 namespace2.2 using2.3 class2.4 程序结构2.5 类的成员2.6 静态与非静态2.7 举例2.8 在线类库帮助三、C#常用类3.1 输入输出类3.1.1 用Console.WriteLine输出3.1.2 用Console.ReadLine输出3.2 Math类3.3 Random类3.4 阅读详情

相关推荐

22版本Altium Designer导出生产文件的规范化操作指南

本文详细介绍了PCB设计中的Gerber文件导出流程及相关文件生成方法。主要内容包括:1)Gerber文件导出的5个关键设置步骤;2)NC钻孔文件的导出方法;3)坐标文件的生成方式;4)文件打包规范要求必须包含Gerber文件、NC钻孔文件和坐标文件;5)文件提交的两种方式(新手推荐提交原始工程文件,量产推荐仅提交Gerber文件包)。文章还特别强调了单位一致性、精度验证等注意事项,为PCB设计文件的规范输出提供了完整指导。

qq_56506325的博客 1058

day17-面向对象

定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积 class Rectangle: def __init__(self,x,y): self.length = x self.weight = y def perimeter(self): return (self.length+self.weight)*2 def area(self): return self.length*self.weight r ..

weixin_52901509的博客 383

Arduino智能小灯DIY:人体感应+光线感应+蓝牙控制全攻略(附完整代码)

本文提供了一份完整的Arduino智能小灯DIY制作指南。项目融合了人体感应、光线感应与蓝牙控制三大功能,通过详细的硬件清单、电路连接图、核心逻辑讲解及附带的完整代码,手把手教你打造一个能自动感知环境与人、并支持手机远程控制的智能照明装置,是入门智能家居和物联网开发的绝佳实践。

java5的博客 1094

day3.08

day3.08-面向对象和json 1. 属性 属性 ''' 定义类就是用代码描述清楚这个类拥有那些相同功能和相同属性的集合,方法(函数)是用来描述相同功能 属性(变量)用来描述相同属性 属性分为两种:类属性、对象属性 1)类属性: a. 怎么定义:直接定义在类中的变量就是类属性 b. 怎么使用:通过'类.'的方法去使用 c.什么时候用:如果属性值不会因为对象不同而不一样的时候 2)对象属性 a. 怎么定义:以'self.属性名 = 值'的方式定义在__init__方法中 b. 怎么使用:通过'对象.

piaoling0626的博客 698

Modbus RTU 详解 + FreeMODBUS移植(附项目源码)

本文全面解析Modbus RTU通信协议,详细介绍其报文格式、功能码定义及典型应用场景,并手把手指导如何将FreeMODBUS协议栈移植到嵌入式平台。内容涵盖从底层硬件驱动配置、协议栈移植到主机/从机通信测试的全流程,重点讲解移植过程中的常见问题及解决方案。文章最后提供经过实测的完整项目源码,帮助开发者快速实现稳定的Modbus RTU通信功能。

Bit_Dong的博客 2926

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 3453

Java6面向对象编程创建一个矩形类, 求周长 面积

package job; /** */ import java.util.Scanner; public class Space { /* 面向对象编程创建一个矩形类, 求周长 面积 */ public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner in = new Scanner(System.in); float l...

qq_22514513的博客 4701

【WRF-Chem】预处理工具(Preprocessors)总结

预处理工具(Preprocessors)总结

WW、forever的博客 1180

Java面向对象基础

面向对象 学习内容 l 面向对象思想 l 类与对象及其使用 l 对象的内存图 l 成员变量和局部变量的区别 l 匿名对象 l 封装(private) l this关键字 l 构造方法 l static关键字 l 继承 l 多态 l 抽象类 l 接口 l 包和导包...

LyncDwight的博客 1万+

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1541

2、Minikube安装Ingress

文章目录前言一、Ingress安装二、Ingress Demo1.创建一个pod和service2.部署ingress3.添加minikube域名映射三、遇到的坑 前言 上篇介绍了Minikube的安装,本篇介绍一下如何在Minikube中安装Ingress。 一、Ingress安装 Ingress安装很简单,Minikube里面带了Ingress附件。 安装Ingress minikube addons enable ingress 禁用Ingress minikube addons disa

star_apple的博客 3071

面向对象基础总结

从今天起,我打算开始研究一下设计模式,以前也有涉及过这方面的知识,不过都不够深入和系统,最近正好静下心来总结一下,今天先从最简单的面向对象基础开始。 1.类与实例    类就是具有相同的属性和功能的对象的抽象的集合。类名一般要大写。比如说人类,人类都有眼睛,手,脚,这些是人都有的属性。而人能够吃饭,唱歌,跑步,这些是人能完成的功能。我是人类,所以我就是人类的一个具体的实例。 2.构造方法

一想天开 486

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JAVA基础之面向对象

面向过程POP(ProcedureOrientedProgramming),是一种基本的编程思想,在面对一个需要解决的问题时,将问题按流程逐步实现,注重执行的细节。用于修饰类和方法,表示抽象的。修饰方法,该方法称为抽象方法,没有方法体,同时该方法所在类一定也要使用abstract修饰成为抽象类。抽象方法只能出现在抽象类中,不能出现在普通类中。抽象类中可以没有抽象方法抽象类中有构造方法,但该构造方法不能使用new调用,所以抽象类不能创建对象抽象类中的构造方法,在创建其子类对象时自动调用。...

Yc_Lq的博客 856

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

PHP面向对象基础

转载自:黑马程序员武汉中心 文章目录面向对象基础一、面向对象编程思想**二、面向对象基础****1、面向对象关键字说明****2、面向对象简单技术实现****3、类成员****4、访问修饰限定符****5、类内部对象****6、面向对象开发规范****7、构造方法****8、析构方法****9、对象传值****10、范围解析操作符(类常量访问)****11、静态成员****12、self关键字**...

末初 · mochu7 1321

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java基础篇面向对象作业—01

Java基础篇面向对象作业—01 问题一:什么是面向对象? 面向对象是一种编程思维,是相对于传统的面向过程的思维来讲的; 传统的面向过程强调的是解决问题的具体步骤,具体方法,编程思路是自顶向下,不断分解地解决问题。 面向对象更加强调解决问题的主体,谁来解决问题,创建可以解决问题的对象,来操作数据,面向对象的编程思路是自底向上,不断拼接; 面向对象的好处有很多,比如面向对象更符合人类的思维模...

Steven_YE 239

C++基础之面向对象基础

类内的成员(尤指成员函数)可以声明与定义分离声明要在类内定义可以写在类外这种写法随后后期学习比重会逐渐增加。类内声明:函数类型 函数名(参数列表);类外定义格式:函数类型 类名::函数名(参数列表)...函数体...private:public://先声明//构造函数//后定义name=n;name=n;

学习过程记录,欢迎大家交流互动,互相学习 1047

Java基础与面向对象

Java基础和面向对象基础

qq_74078496的博客 1169

Python面向对象基础

AttributeError: 'Cat' object has no attribute 'name' 属性错误:'Cat' 对象没有 'name' 属性。class 类名: ​ def 方法1(self, 参数列表): pass def 方法2(self, 参数列表): pass。在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!提示:需求中没有涉及的属性或者方法在设计类时,不需要考虑。,稍后会给大家介绍一些常用的 内置方法 / 属性。调用的方法,方法内的。对象变量 = 类名()

m0_71804489的博客 1006

面向对象基础篇1

面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法。首先我们先定义一个只包含方法的类。class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass在该类中,方法的定义和函数几乎是一样的,区别在于类中的方法第一个参数必须是self。

qq_65321713的博客 1097

面向对象基础笔记

1、面向对象基础 1.1、面向对象思想 1.1.1、概述 ​ 面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已经超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 ​ 面向对象方法是相对于面向过程来讲的,指的是把 相关的数据和方法组织为一个整体 来看待,从更高的层次来进行系统建模,更贴近事务的自然运行模式。 面向过程到面向对象思想层面的转变: 面向过程关注的是执行的过程,面向对象关注的是 具备功能的对象 面向对象到面向过程

weixin_43813836的博客 187
上一篇: 正则
下一篇: 面向对象基础
oklying
博客等级 码龄8年 6粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值