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

手机网站开发看什么书/网络推广怎么做

手机网站开发看什么书,网络推广怎么做,厦门企业网站seo,网络规划设计师教程第2版pdf下载前言前面我们总结过了python的关键字、运算符、内置函数、语法糖等与python魔法方法之间的关系,现在我们更细一点,看看python的面向对象编程有哪些常用的魔法属性和魔法方法。魔法属性对于一个类,python定义了许多可用的魔法属性,…

前言

前面我们总结过了python的关键字、运算符、内置函数、语法糖等与python魔法方法之间的关系,现在我们更细一点,看看python的面向对象编程有哪些常用的魔法属性和魔法方法。

魔法属性

对于一个类,python定义了许多可用的魔法属性,有些每个类都默认存在,有些需要用户手动定义。

__dict__

__dict__属性可以说是一个类最常用的属性之一了,它又分为类的__dict__属性和实例的__dict__属性。

class Person(object):

eye = 2

hand = 2

def __init__(self, name):

self.name = name

def run(self):

print('run')

@classmethod

def eat(cls):

print('eat')

if __name__ == "__main__":

person = Person('cai')

print(Person.__dict__)

print(person.__dict__)

类的__dict__属性存储了类定义的所有类属性、类方法等组成的键值对,但不包括继承而来的属性和方法

实例的__dict__属性存储了所有的实例属性的键值对,如果没有就为空;__init__方法其实就是对__dict__属性的初始化赋值;

__doc__

该属性记录了类的说明文档,用类和实例引用指向的都是类的__doc__属性,如果没有默认为None。

class Person(object):

"""person"""

pass

per = Person()

print(per.__doc__) # person

__module__

该属性记录类定义的位置,如果定义的位置正好是主程序,那么该值为"_main_",否则是类属于的模块的名字;

class Person(object):

"""person"""

pass

per = Person()

print(per.__module__) # __main__

__class__

该属性指向该实例的类,即实例指向类对象,类对象指向元类;

class Person(object):

"""person"""

pass

per = Person()

print(per.__class__) #

print(per.__class__()) # 创建了一个新的实例

print(Person.__class__) #

# 在一个类的内部直接使用__class__指代类本身。

__slots__

该属性起到限制动态绑定属性和方法的作用,该属性是一个元组,默认是不存在的,需要手动定义并且只对当前的类起作用,只有添加到元组中的名字才能被动态添加属性,否则报错!

class Person(object):

__slots__ = ('name','age','run')

def __init__(self):

self.height = 100 # 报错

def run(self):

print('run')

if __name__ == "__main__":

from types import MethodType

person = Person()

person.name = 'cai'

person.run = MethodType(run,person)

person.run()

__slots__属性定义好后,限制了一个类的实例的属性以及可以动态添加的属性和方法;

__slots__属性定义好后,不得在类中定义元组中已有的同名的方法;

魔法方法

__new__

该方法是类创建实例调用的第一个方法,返回一个实例;这是一个实例从无到有必须调用的方法,在单例模式中常用,其他不常用。

class Person(object):

def __new__(cls, *args, **kwargs):

print(args)

return object.__new__(cls)

if __name__ == "__main__":

person = Person('cai')

创建实例时会将参数传入new方法,但new方法中无法更改参数。

__init__

该方法可以说是类最常用的方法了,python在调用new方法后会紧接着调用init方法,我们将实例的一些初始化操作放在该方法中,即对__dict__属性进行操作;

class Person(object):

def __init__(self, name):

self.name = name

def __setattr__(self, key, value):

print(key,value)

super().__setattr__(key,value)

if __name__ == "__main__":

person = Person('cai')

print(person.__dict__) # {'name': 'cai'}

所有的“self.name = name”这种语法糖,python会先调用setattr魔法方法,该魔法方法对__dict__属性中添加键值对;

self一定是__new__方法的返回值,如果返回的是1,那么self就是1.

__del__

该方法在实例对象引用计数变为0或del关键字调用的时候触发执行。

__repr__

该方法在print()调用或repr()调用时执行,用来定义对类的信息的描述,每个类都应该定义这个方法。

总结

类的常用魔法属性有__dict__,__doc__,__mould__,__slots__,其中slots属性需要自定义,其他属性默认存在;

构造类常用init,new,del方法,它们在类创造、初始化、销毁时触发;

参考

http://www.lbrq.cn/news/1309411.html

相关文章:

  • 网站现状如何分析/晚上必备免费软件大全苹果
  • 一个论坛网站应该怎么做/中小企业管理培训课程
  • 云南省建设厅网站查询/优化关键词排名公司
  • 梅州市网站制作/培训学校怎么招生
  • 做博客网站怎么赚钱吗/百度快速收录教程
  • java做网站好学么/深圳网络推广seo软件
  • jsp网站开发 开题依据/网络营销与策划实践报告
  • 网站页面布局分类/seo整合营销
  • 做外单的网站/优化排名案例
  • 怎样给自己的网站做优化/上海网站排名seo公司哪家好
  • 怎么做可上传图片的网站/seo最新快速排名
  • 东城专业网站建设公司/手机怎么建自己的网站
  • 昆山网站设计公司/网站优化排名哪家好
  • 花都区pc端网站建设/网络营销方法
  • 网站页面的滑动怎么做的/网站描述和关键词怎么写
  • 校园网站怎么做HTML/seo 优化思路
  • 做信息网站的盈利方式有哪些/河南品牌网络推广外包
  • 柳州做网站有kv/网络推广计划制定步骤
  • 西安网站建设选任我行网络/如何利用网络进行推广和宣传
  • 群晖系统可以做网站吗/seo分析与优化实训心得
  • 中文商城响应式html网站模板/最好用的手机优化软件
  • 做购物网站需要什么资质/关键词歌词林俊杰
  • php动态网站设计/上海网站建设哪家好
  • 安徽网络公司排名/seo推广的方法
  • 佛山微网站推广/百度一下百度主页度
  • 深圳市建设注册执业资格中心网站/百度收录官网
  • 临沂企业网站建站模板/成都门户网站建设
  • 国外商业网站设计/四川网络推广推广机构
  • 网站建设平台哪个部门管/百度保障平台 客服
  • 烟台网站建设的公司/品牌营销策略分析
  • Java集合框架中List常见问题
  • display:flex弹性布局
  • 【真·CPU训模型!】单颗i7家用本,4天0成本跑通中文小模型训练!Xiaothink-T6-mini-Preview 技术预览版开源发布!
  • Liunx练习项目6-创建dns服务器
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘tkinter’问题
  • Taro.eventCenter 用法详解与实战