当前位置: 首页 > news >正文

发帖网站百度收率高的ppt模板制作免费

发帖网站百度收率高的,ppt模板制作免费,城乡厅建设部网站首页,安徽易企建站目录 属性和方法静态属性/方法、普通属性/方法、类方法保护和私有属性/方法魔术方法构造方法(\_\_new__/\_\_init\_\_)析构方法(\_\_del__)调用方法(\_\_call__)toString方法\_\_str__、\_\_repr\_\_\_\_getitem__、setitem、delitem\_\_add__、\_\_gt\_…

目录

  • 属性和方法
    • 静态属性/方法、普通属性/方法、类方法
    • 保护和私有属性/方法
    • 魔术方法
      • 构造方法(\_\_new__/\_\_init\_\_)
      • 析构方法(\_\_del__)
      • 调用方法(\_\_call__)
      • toString方法\_\_str__、\_\_repr\_\_
      • \_\_getitem__、setitem、delitem
      • \_\_add__、\_\_gt\_\_方法
      • with \_\_enter__、\_\_exit\_\_
    • 内置属性及其功能
  • python自省
  • python元类
  • 抽象基类


属性和方法

静态属性/方法、普通属性/方法、类方法

class A():name = "changsha"	# 静态属性,类属性def __init__(self):self.country="china"	# 普通属性,实例属性#普通(实例)方法#接收的第一个参数,就代表实例本身def normal_method(self,name):pass# 类方法,	使用classmethod.装饰的方法,称为类方法# 接收的第一个参数是类@classmethoddef class_method(cls,name):pass# 静态方法,	使用staticmethod装饰的方法,不装饰的话实例调用该方法时默认会传递实例对象给方法的,这样就会报错# 可以接收参数也可以不接受参数,参数不代表实例也不代表类@staticmethoddef static_method(name):pass

实例可以调用三种方法,用类去调用实例方法时需手动传入一个实例

保护和私有属性/方法

class test:name = ""_name = ""	# 保护属性__name = ""	# 私有属性def _func(self):	# 保护方法passdef __func(self):	# 私有方法pass

对于保护属性和方法,使用起来与普通属性和方法没有区别,只是在使用import * 时不能被导入

对于私有属性和方法,其实是伪私有。不过是将双下划线的属性或方法改了一个名字为: _类__标识名

class test:__name = "私有属性"  # 私有属性def __func(self):  # 私有方法print("私有方法")t = test()
print(t._test__name)	# 通过这样的格式即可调用
t._test__func()

魔术方法

所有以双下划线开头和结尾的方法,统称为魔术方法(magic method)

这种魔术方法不需要调用,在特定场景下自动执行。

由于markdown格式下对下划线做纠正太麻烦了,所以下面有的地方可能格式有些不正确,但能明白我指的是那个方法就行

构造方法(__new__/__init__)

new:创建实例

init:初始化实例

析构方法(__del__)

在实例释放、销毁的时候自动执行的,通常用于做一些收尾工作, 如关闭一些数据库连接,关闭打开的临时文件等

class a:def __del__(self):print("del")a1 = a()
del a1	# 此时就会自动调用del方法,不手动del时,等程序执行结束时也会自动执行del方法

调用方法(__call__)

把类实例化后的对象当做函数来调用的时候自动被调用

class a:def __call__(self):print("call")a1 = a()
a1()	# 此时就会执行call方法,像函数、类都是通过call方法来实现的

toString方法__str__、__repr__

有str方法时使用str方法,没有就使用repr方法

class A():def __str__(self):return "str...A"def __repr__(self):return "repr...A"
a = A()
print(a)	# print一个实例时就是调用str方法
str_a = str(a)	# 使用str()函数时也是调用实例中的str方法# 当在交互式命令行中输入a之后回车,就会调用repr方法输出内容

__getitem__、setitem、delitem

使类的实例能够像字典一样被使用,适合用来进行配置

class A():def __init__(self):self.data = {}	# 初始化个空字典def __getitem__(self, key):return self.data.get(key, 0)	# key存在返回value,不存在返回0def __setitem__(self, key, value):self.data[key] = valuedef __delitem__(self, key):del(self.data[key])
a = A()
a["name"] = "sc"	# 此时调用setitem方法,name传给key,sc传给value
print(a["name"])	# 此时调用getitem方法
del a["name"]		# 调用delitem方法

__add__、__gt__方法

自定义 加法 和 大于方法

class A:def __init__(self,num):self.time = time.time()self.num = numdef __add__(self,x):print("this is add")return self.num + xdef __gt__(self,other):print("this is gt")return self.time > other.time	# 根据创建的时间戳来比大小,越新创建的越大
a1 = A(5)
b = a1 + 3		# 调用add方法
print("b is :"b)
a2 = A(4)
print(a1>a2)	# 调用gt方法

with __enter__、__exit__

使用with语句管理的对象 称为 上下文管理器对象

都会实现enter、exit魔术方法

enter做一些初始化工作

exit做一些结束收尾工作,释放资源

内置属性及其功能

__dict__:类的属性(包含一个字典,由类的数据属性组成)

__doc__:类的文档字符串

__name__:类名

__module__:类定义所在的模块

__bases__:类的所有父类构成元素

__class__:类型,比如类就返回type,实例就返回它的父类

python自省

对某一个对象属性(方法)的增删改查

#python自省
print(hasattr(math,"xx"))	#判断math有没有xx属性
print(setattr(math,"xx",1))	#设置math的xx属性为1
print(getattr(math,"xx")	#获取math的xx属性
print(delattr(math,"xx"))	#删除math的xx属性def func2():pass
setattr(a,"func",func2)	# 将func2方法添加到a实例中并命名为func

python元类

创建类的类称之为元类

一些基本类的元类都是type

print(str.__class__)	# 输出:<class 'type'>
>>> print(object.__class__)		# object是所有类的父类,这是从继承的角度
<class 'type'>		# type是创建类中最顶层的类,这是从实例和类的角度
# 两者的关系很难说,type继承了object,但object又由type创建

可以自定义一个元类

class MyMate(type):		# 继承type类#拦截类的创建#			  名字 继承(元组)	方法属性(dict)def __new__(cls,name,bases,attrs):attrs["test"] = "mymate test"print(name,bases,attrs)return type.__new__(cls,name,bases,attrs)
class A(metaclass=MyMate):passa = A()
print(a.test)

抽象基类

抽象基类 定义了接口规范,子类必须实现父类里面的抽象方法

抽象类不能实例化

想定义抽象基类,需要先导入ABC模块:

from abc import ABC, abstractmethod

ABC模块提供了一种定义抽象基类的方式,是指"Abstract Base Classes"(抽象基类)模块。它是Python标准库中的一个模块,位于abc包中。

from abc import ABC,abstractmethod
#抽象基类
class A(ABC):@abstractmethod		# 被这个装饰的方法称为抽象方法def eat(self):passdef drink(self):	# 没有被@abstractmethod装饰的方法为普通方法pass
class B(A):				# 子类必须实现父类中的抽象方法def eat(self):print("this is eat")
b = B()
http://www.yayakq.cn/news/486337/

相关文章:

  • 申请网站做自己的产品京东网站建设现状分析
  • 手机wap网站怎样从微信公众号打开网站密码如何找回
  • 邢台高端网站建设公司VS2010做网站登录页面步骤
  • 设计素材网站哪个最好免费云建设平台
  • 做旅游宣传网站的流程申请了域名 网站怎么建设呢
  • 东莞有哪些做网站河南发现5名阳性
  • 网站建站要交税吗全网营销型网站建设模板
  • 做网站 哪些公司wordpress3.1
  • 电子商务毕业设计 网站建设jsp简单的网站开发例子
  • 淄博免费建站公司做网站怎么推广
  • 阿里巴巴网站网络营销的平台腾讯网站认证
  • 怎么扫码进入公众号广州网站建设seo
  • 企业网站设计服务优化网站平台
  • 建设厅网站总经济师是干什么的贵州省住房和城乡建设厅网站首页
  • 青岛网站优化flash网站源文件下载
  • 做品牌网站哪个好点免费网站制作软件
  • 保定网站建设公司哪家好网站策划案怎么做
  • 分类信息网站营销建设电商网站的
  • 关键词代做排名推广泽成杭州seo网站推广排名
  • 山东建站管理系统淘宝支持做微交易网站吗
  • 动易 网站统计 首次打开如何做淘宝商城网站设计
  • 二次网站开发平台眉山建网站
  • 微信公众商城网站开发腾讯网页版
  • led营销型网站建设wordpress 免费个人主题
  • 网站建设运行情况惠州开发做商城网站建设哪家好
  • 如何做网络营销推广ppt如何优化关键词搜索
  • 网站的互动广东省建设见证员网站
  • 网站网络营销推广商城阿里云服务器可以做多少个网站
  • 商城网站建设流程可以做网站的电脑软件
  • 网站域名地址查询wordpress 添加外链