【python第7课 实例,类】

2023-09-21 21:55:54

一、实例

1.1实例的变量

使用示例

class dog:
	def __init__(self,k,c,a):
	    self.kinds = k
	    self.color = c
	    self.age = a
d1 = dog("京巴","白色",1)
d2 = dog("金毛","黄色",2)
print(d1.kinds)
print(d1.color)

##z执行结果
京巴
白色

1.2实例方法

语法 :
class 类名(继承列表):
  def 实例方法名(self,形参参数1,形参参数2……):
   语句……
说明:
 实例方法的实质是函数,是定义在类内的函数
 实例方式属于类的属性
 实例方法的第一个参数代表调用这个实例方法的对象,一般命名为“self”
 实例方法如果没有return语句,则返回None
实例方法调用示例

class dog:
	def __init__(self,k,c,a):
	    self.kinds = k
	    self.color = c
	    self.age = a
	def say(self):
	    print("汪汪")
d1 = dog("京巴","白色",1)

#用对象来调用
d1.say()
#用类来调用
dog.say(d1)

#执行结果
汪汪
汪汪

1.3 构造方法

作用:
 创建对象时初始化实例对象
语法:
  def __init__(self, [形参参数列表]):
   语句……
说明:
  构造方法名必须为 __init__ 不可改变
  构造方法会在实例创建时自动调用,且将实例自身通过第一个参数self传入__init__方法

1.4析构函数

语句:
def __del__(self):
  pass
说明:
析构方法会在对象销毁时被自动调用
python不建议在析构语句中做任何事情,因为该方法调用的时间难以确定

1.4预置实例属性:

说明
__dict__属性以字典的方式输出对象的所有属性,__class__属性可以的到对象类的名字,__doc__属性输出对象的类中的注释,__module__属性输出对象所在模块的名字

示例

class dog:

	def __init__(self,k,c,a):
	    self.kinds = k
	    self.color = c
	    self.age = a
	def say(self):
	    print("汪汪")
d1 = dog("京巴","白色",1)
print(d1.__class__)
print(d1.__dict__)
print(d1.__doc__)
print(d1.__module__)

#输出
<class '__main__.dog'>
{'kinds': '京巴', 'color': '白色', 'age': 1}
None
__main__


二,类

1.1类变量

定义在类中的变量
可以通过以下访问
示例

class human:
    home = "地球"
    def __init__(self,name):
        self.name = name #只能通过实例对象访问
print(human.home) #通过类访问类变量
h1 = human("张三")
print(h1.home) #通过实例对象访问类变量

#执行结果
地球
地球

在实例的对象中修改类变量只会修改实例对象自己类变量
示例

class human:
    home = "地球"
    def __init__(self,name):
        self.name = name #只能通过实例对象访问
h1 = human("张三")
h1.home = "火星"
print(h1.home) #通过实例对象访问类变量
print(human.home) #通过类访问类变量

#执行结果
火星
地球

1.2类方法

类方法 @classmethod
说明:
  类方法是只能访问类变量的方法
  类方法的第一个参数是类的实例,约定为cls
  类和实例对象都可以调用类方法
 类方法不能访问实例变量
示例

class icbc:
    moneys = 1000
    @classmethod
    def total_moneys(cls):
        print("总钱数为",cls.moneys)
icbc.total_moneys()
a = icbc()
a.total_moneys()

#执行结果
总钱数为 1000
总钱数为 1000

1.3静态方法

静态方法@staticmethod
说明
 静态方法是普通函数
 静态方法定义在类的内部,只能凭借该类和实例调用
 静态方法不能访问类变量和实例变量
示例

class a:
    @staticmethod
    def myadd(a,b):
        return a+b
print(a.myadd(10,20))
b = a()
print(b.myadd(10,30))

#执行结果
30
40

1.4类属性的增删改查

说明
getattr(obj, name, [default])  获取对象属性
hasattr(obj, name)      查找这个属性
setattr(obj, name, value)    增加属性
delattr(obj, name)       删除这个属性

示例

class myclass:
    pass
a = myclass()
print(hasattr(a,"name")) #查找name属性
print(setattr(a,"name",100)) #增加name属性
print(hasattr(a,"name")) #查找name属性
print(getattr(a,"name")) #获取name属性的值
delattr(a,"name")       #删除name属性    
print(hasattr(a,"name"))

#执行结果
False
None
True
100
False
更多推荐

OPCAE扫盲

目录1基本概念1.1服务器/客户端1.2区域1.3报警/条件1.4事件2条件概念2.1子条件2.2OPCConditions属性2.3Condition质量2.4OPCSubConditions属性2.5Condition定义2.6严重性2.7Condition启用/禁用2.8Area启用/禁用2.9Condition

服务器托管费用包含什么?

服务器托管和服务器租用是有一定区别的,那么服务器托管多少钱一年呢?今天就让小编来讲一讲服务器托管费用包含什么吧?服务器的机柜费。因为是服务器托管,所以不需要IDC服务器商提供服务器,只需要给自己的服务器付租用机柜的费用。通常是1U、2U、4U、半柜、整柜几种租用尺寸。(注:1U=4.445厘米,2U=8.89厘米,以此

Aztec交易架构解析

1.引言前序博客有:Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私完全保密的以太坊交易:Aztec网络的隐私架构Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能AccountAbstraction账号抽象——EIP-4337提案Aztec团队认为:隐私用户体验糟透了。

深入解读什么是期权的内在价值和时间价值?

期权品种越来越丰富,对于大家套利对冲都有很多的选择。而有些初学者对时间价值一直不理解,今天呢,就给大家讲一讲深入解读什么是期权的内在价值和时间价值?本文来自:期权酱01在期权交易过程中,想必大家都会有以下几点疑惑:❑我看对行情了,为什么行情上涨或者下跌。认沽和认购都不赚钱?❑什么是期权的内在价值和时间价值?❑一旦被套,

HTTP网络协议与接口测试逻辑

很多测试人员都做过接口测试,但是聊到接口还是会不太清楚。网络协议:但凡要做接口测试,一定要懂网络协议。目前市场主流的网络协议HTTP1.1,Dubbo2,HTTP2.O(相对较少)HTTP1.1网络协议:搞懂打开浏览器访问一个URL会经历的步骤有哪些?(也就是搞懂了HTTP网络协议的基本交互流程)解析URL,将域名解析

性能测试 —— Jmeter 常用三种定时器

1、同步定时器位置:HTTP请求->定时器->SynchronizingTimer当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行取样器的操作测试绝对并发,比如秒杀,抢购等场景,结果要用聚合报告查看简单案例:模拟50个用户同时访问百度线程

JMeter 测试脚本编写技巧

是一款开源软件,用于进行负载测试、性能测试及功能测试。测试人员可以使用JMeter编写测试脚本,模拟多种不同的负载情况,从而评估系统的性能和稳定性。以下是编写JMeter测试脚本的步骤。第1步:创建测试计划在JMeter中,测试计划是测试的最高级别,它包含了各种元素和配置,如线程组、断言、监听器等。测试人员需要在JMe

2种方法,jmeter用一个正则提取器提取多个值!

jmeter中,用json提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢?肯定,很多人都自信满满的说,可以!形如:token":“(.?)“,“identity”:”(.?)”写一个这样的正则表达式,不就是可以提取两个了吗!是的,这种做法没有错,但是,你发现一个问题吗?你的“Name

【初阶数据结构】树结构与二叉树的基础概念

君兮_的个人主页勤时当勉励岁月不待人C/C++游戏开发Hello,米娜桑们,这里是君兮_,今天带来数据结构里的重点内容也是在笔试,面试中的常见考点——树与二叉树,其中二叉树又分为很多种,我们先来讲讲基础的内容带大家一步步入门二叉树与其遍历一树的概念及其结构1.树结构中的相关概念2.树的表示二什么是二叉树?1概念2特殊的

急救车工业路由器应用提升急救效率:车联网、数据采集与远程诊疗

急救车作为医院里医疗急救过程中的重要组成部分,在智慧医疗物联网领域中急救车应用4G工业路由器实现网络部署与数据采集,通过工业4G路由器能够实时采集到病患的生理数据、救护现场音频与视频、GPS定位以及车辆运行状态等重要信息。这些数据将被传输到医疗急救系统帮助院内医生对急救车上的病患进行初步判断,并及时提供远程诊疗协助。I

【计算机网络】图解路由器(一)

图解路由器(一)1、什么是路由器?2、什么是路由选择?3、什么是转发?4、路由器设备有哪些类型?5、根据性能分类,路由器有哪些类型?5.1高端路由器5.2中端路由器5.3低端路由器6、什么是家用路由器?7、运营商用什么类型的路由器?8、企业用什么类型的路由器?9、什么是IP地址?10、地址如何分类?11、什么是CIDR

热文推荐