我知道关于这个问题已经写了很多.但是,我不能吸收其中的大部分内容.也许是因为我是一个完整的新手,在没有任何计算机科学培训的情况下自学.无论如何,也许如果你们中的一些大脑在这个具体的例子中引用,你会帮助像我这样的其他初学者.

所以,我编写了以下函数,当我调用它(作为模块?)时,它的工作正常,因为它的文件名为’funky.py’:

我在我的终端输入以下内容:

python classy.py

它运行正常.

def load_deck():

suite = ('Spades', 'Hearts')

rank = ('2', '3')

full_deck = {}

i = 0

for s in suite:

for r in rank:

full_deck[i] = "%s of %s" % (r, s)

i += 1

return full_deck

print load_deck()

但是,当我在一个类中放入相同的函数时,我收到一个错误.

这是’classy.py’的代码:

class GAME():

def load_deck():

suite = ('Spades', 'Hearts')

rank = ('2', '3')

full_deck = {}

i = 0

for s in suite:

for r in rank:

full_deck[i] = "%s of %s" % (r, s)

i += 1

return full_deck

MyGame = GAME()

print MyGame.load_deck()

我收到以下错误:

Traceback (most recent call last):

File "classy.py", line 15, in

print MyGame.load_deck()

TypeError: load_deck() takes no arguments (1 given)

所以,我将定义行更改为以下内容并且工作正常:

def load_deck(self):

将函数放在需要使用“self”的类中是什么意思?我明白’自我’只是一种惯例.那么,为什么需要任何论证呢?从类中调用函数时,函数的行为会有所不同吗?

而且,这几乎更重要,为什么我的班级没有使用init的好处?什么会使用init为我的课程做什么?

基本上,如果有人有时间向我解释,就像我6岁,这会有所帮助.在此先感谢您的帮助.

解决方法:

在类定义中定义函数会调用一些将其转换为方法描述符的魔法.当您访问foo.method时,它将自动创建绑定方法并将对象实例作为第一个参数传递.您可以使用@staticmethod装饰器来避免这种情况.

__init__只是在创建类来执行可选设置时调用的方法. __new__是实际创建对象的内容.

这里有些例子

>>> class Foo(object):

def bar(*args, **kwargs):

print args, kwargs

>>> foo = Foo()

>>> foo.bar

>

>>> Foo.bar

>>> foo.bar()

(<__main__.Foo object at 0x01C9FEB0>,) {}

>>> Foo.bar()

Traceback (most recent call last):

File "", line 1, in

Foo.bar()

TypeError: unbound method bar() must be called with Foo instance as first argument (got nothing instead)

>>> Foo.bar(foo)

(<__main__.Foo object at 0x01C9FEB0>,) {}

标签:python,function,instantiation,self,class

来源: https://codeday.me/bug/20190626/1289182.html

python实例化是什么意思_类实例化和python中的’self’相关推荐

  1. Python 进阶_OOP 面向对象编程_类属性和方法

    目录 目录 类属性 调用类属性 查看类属性 特殊的类属性 类方法 真构造器 __new__ 类属性 在理解类属性之前要先搞清楚 实例属性 和 函数属性 之间的区别: 1. 实例属性:指的是实例化类对象 ...

  2. Python 进阶_OOP 面向对象编程_类和继承

    目录 目录 类 最简单的类 类方法 构造器 __init__ 创建一个类 实例化一个对象 调用实例的方法和属性 创建子类 使用 super 来调用父类的构造器 实例化子类对象 调用子类的属性和方法 类 ...

  3. python 类和对象 有必要学吗_类与对象-python学习19

    类与对象 类:我们常用类来划分一个个特定的群体:我们所说的类,是物以类聚的类,是分门别类的类,是多个类似事物组成的群体的统称.类的概念能帮助我们快速理解和判断事物的性质. 类(class),比如整数. ...

  4. Python笔记_23_正则相关函数_类中的方法_装饰器_异常

    文章目录 正则相关函数 search 和 match split 切割 sub 替换 finditer 匹配字符串中相应内容,返回迭代器 compile 指定一个统一的匹配规则 正则表达式的修饰符 类 ...

  5. python导入模块的常用方法_(9)python模块的定义、导入、优化,常用模块

    [1]模块的定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑等:核心就是实现一个功能)本质上就是.py结尾的 python 文件 比如: 文件名 test.py ,对应的模块名就是 ...

  6. python 鱼c工作室作业_#鱼C工作室Python作业#图解python百度云

    最好的python视频教程谁有 我这里有python全套高清教学视频,非常适合新手小白,真实分享,望采纳点赞. python 网盘 python视频教程从入门到精通 有提取码:提取码:8ste 求一个 ...

  7. python类的定义和使用_Python3基础之python 之 面向对象基础(定义类、创|python基础教程|python入门|python教程...

    第七章面向对象 1.面向过程编程核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问题流 ...

  8. python程序不出结果_超详细的Python入门教程,1小时就可以学会

    为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是 ...

  9. python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化

    之前,在使用Python开展数据分析的过程中,经常会遇到需要基于同一份中间结果分别做不同维度的分析统计,开始我们做的思路是每次都重新计算,后来发现在TB级别的数据背景下这种操作是非常浪费算力的,考虑到 ...

最新文章

  1. R可视化多元线性回归模型
  2. 【服务器】创建docker、运行jupyter相关命令
  3. Java操作MongoDB(聚合函数)向Mongo插入及查询数据
  4. 具体化和实例化的应用
  5. ubuntu查看cuda和cudnn
  6. (转载addone)完全使用Linux作为桌面系统 —— 使用Linux两年记 --软件列表
  7. 文章复现:SRCNN
  8. 15000字看完lululemon增长攻略
  9. Canvas实例之鼠标移动特效(彩色小球)
  10. 休闲实用英语:别误会这些英文的意思
  11. Ubuntu安装LXDE桌面环境
  12. uniapp swiper组件被内容撑开
  13. The Civil War in France translation04
  14. 虫洞 Wormhole
  15. 浙江大学计算机科学与技术学院分数线,浙江大学分数线是多少 王牌专业有哪些...
  16. 按关键字搜索淘宝商品
  17. 综合布线---关于线缆的一些小知识(1)
  18. Fabric 1.0源代码分析(12)cryptogen(生成组织关系和身份证书)
  19. 知网的html查重报告看不了,知网查重报告无法查看或者出现乱码怎么解决?
  20. 开源漏洞检测框架收集

热门文章

  1. Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...): singular fit encountered
  2. unexpected symbol、unexpected end of input
  3. 医学影像阅读/分析软件FSLeyes安装避坑+核磁共振影像数据处理
  4. PNAS:利用long-read生成个人转录组
  5. Corrigendum: A window into third generation sequencing
  6. 使用VC++6.0创建MFC对话框程序
  7. typora中latex数学公式的使用
  8. 程序员接活利器,dataTable组件带你快速开发,摆脱CRUD
  9. 使用pydub做静音帧去除
  10. Java 注册SIGINT信号,处理CTRL+C