Python基础08

ops/2024/10/24 5:21:26/

目录

1.Object-Oriented Programming

2.类

2.1类的定义

2.2实例化对象(构造函数)

2.3self

2.4cls

2.5实例变量(也叫属性)

2.6类属性

2.5初始化方法

2.7类方法

2.8静态方法

3.继承

3.1单继承

3.2多继承

3.3覆盖(Override)


1.Object-Oriented Programming

一切皆是对象(实例),用 各对象之间的关系来描述事务。

2.类

拥有相同属性和行为的对象的组成

用来创建对象(实例化)

2.1类的定义

数据成员:变量

方法成员:函数

class 类名(继承列表):

        实例属性(类内的变量) 定义

        实例方法(类内的函数) 定义

        类变量(class variable) 定义

        类方法(@classmethod) 定义

        静态方法(@staticmethod) 定义

2.2实例化对象(构造函数)

变量 = 类名([参数])

说明:

变量存储的是:实例化对象的地址

python">huaWei=MobilePhone("华为",18888)
iPhone=MobilePhone("苹果",12888)

2.3self

即:实例(对象)本身

类方法的第一个参数,用于引用对象本身

理解:坐高铁、住酒店时使用的身份证。

python">class Student():def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexdef sleep(self, ):print(self.name, "正在睡觉")def study(self, subject):print(self.name, "正在学", subject)

2.4cls

cls 是一个约定俗成的名称,用于表示类本身。

cls 作为第一个参数传递给方法。

(1)访问类属性

(2)访问类方法

(3)创建类实例

python">class MyClass():class_attr = 0  # 类属性def __init__(self, name):self.name = name@classmethoddef modify_class(cls, num):cls.class_attr = numprint("类属性已修改为", cls.class_attr)

2.5实例变量(也叫属性)

定义在实例方法内的属性

  • 首次为属性赋值则创建此属性.

  • 再次为属性赋值则改变属性的绑定关系

python">class MobilePhone():def __init__(self, name, price, phone_number):self.name = nameself.price = priceself.phone_number.append(phone_number)

2.6类属性

属于类不属于对象

类创建的对象的共有属性

类属性在对象中共用

python">class Dog():name = "旺财"#类属性def eat(self):print("吃")def bark(self):print("汪汪")

2.5初始化方法

对新创建的对象添加属性

创建实例后自动调用初始化方法

方法名必须为__init__ 不可改变

class 类名():def __init__(self,属性1,属性2,..):

        self.属性1=属性1

python">class Bank():all_price = 100000def __init__(self, name):self.name = name

2.7类方法

属于类不属于对象

用@classmethod装饰器定义

至少有一个形参cls

python">class MyClass():class_attr = 0  # 类属性def __init__(self, name):self.name = name@classmethoddef modify_class(cls, num):cls.class_attr = numprint("类属性已修改为", cls.class_attr)

2.8静态方法

静态方法能访问类属性

使用@staticmethod装饰器定义

不需要传入self实例参数和cls类参数

静态方法一般不能访问实例属性,但可以:类名.属性名  进行访问

python">class Static():attr = "Hello Man"def __init__(self,name):self.name=name@staticmethoddef static_fun():print(Static.attr)# print(self.name)static1=Static("A")
static1.static_fun()

3.继承

继承是从已有的类中派生出新的类,新类具有原类的数据属性和行为,并能添加新的数据属性和行为。

3.1单继承

单继承是指派生类由一个基类衍生出来的

python">class Person():def __init__(self, name, money):self.name = nameself.money = moneydef earn_money(self):print(self.name, f"挣了{self.money}元")class Man(Person):def __init__(self, name, money):Person.__init__(self, name, money)

3.2多继承

即继承多个类

注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

python">class sample(speaker,student):a =''def __init__(self,n,a,w,g,t):student.__init__(self,n,a,w,g)speaker.__init__(self,n,t)

3.3覆盖(Override)

子类中实现了与基类同名的方法,在子类的实例调用该方法时,实际调用的是子类中的覆盖版本

python">class AttackObject():def __init__(self,name):self.name=namedef injured(self):passclass Player2(AttackObject):def __init__(self, name):AttackObject.__init__(self, name)def injured(self):print(self.name,"掉血,碎屏")


http://www.ppmy.cn/ops/128015.html

相关文章

力扣每日一题3175. 找到连续赢 K 场比赛的第一位玩家

看到数据范围n是1e5, k是1e9就可以知道,这题目暴力模拟肯定会超时。 但我们看,在k比n大情况下,一轮循环下来肯定是没有赢家的,需要多轮。当然,我们肯定不可能去一轮一轮模拟,那我们怎么判断谁是赢家呢&…

gin入门教程(8):渲染与静态文件

目录结构 /hello-gin │ ├── cmd/ │ └── main.go ├── pkg/ │ └── shared_lib.go ├── internal/ │ └── internal_lib.go ├── api/ │ └── routes.go ├── config/ │ └── config.go ├── migrations/ │ └── migration.sql └…

Vue封装组件并发布到npm仓库

前言 使用Vue框架进行开发,组件封装是一个很常规的操作。一个封装好的组件可以在项目的任意地方使用,甚至我们可以直接从npm仓库下载别人封装好的组件来进行使用,比如iview、element-ui这一类的组件库。但是每个公司的业务场景可能不同&…

Python 实现的风控系统(使用了kafka、Faust、模拟drools、redis、分布式数据库)

以下是一个使用 Python 实现的风控系统示例,涵盖以下技术组件: Kafka 消息中间件:用于实时接收支付业务系统传递的交易数据。Faust(Kafka Streams 的 Python 等价):用于流式处理 Kafka 中的消息。规则引擎…

axios直接上传binary

axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary,平常我们很少使用,可能有的同学遇到这种情况不太会了,认为后端应该有个字段名来接收,或者使用 Formdata,但其实…

报表工具怎么选?山海鲸VS帆软,哪个更适合你?

概述 在国产报表软件市场中,山海鲸报表和帆软这两款工具都占有一席之地,许多企业在选择报表工具时常常在它们之间徘徊。然而,随着企业对数据分析需求的不断增长和复杂化,如何选取一款高效、易用且性价比高的报表工具,…

中小型医院网站:Spring Boot开发策略

2 相关技术简介 2.1 Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,…

15分钟学Go 第1天:Go语言简介与特点

Go语言简介与特点 1. Go语言概述 Go语言(又称Golang)是由谷歌于2007年开发并在2009年正式发布的一种开源编程语言。它旨在简单、高效地进行软件开发,尤其适合于网络编程和分布式系统。 1.1 发展背景 多核处理器:随着计算机硬件…