精华内容
下载资源
问答
  • 的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一参数名称, 按照惯例它的名称是 self。 class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt() class ...
    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
    
    class Test:
        def prt(self):
            print(self)
            print(self.__class__)
     
    t = Test()
    t.prt()
    
    
    class Test:
        def prt(runoob):
            print(runoob)
            print(runoob.__class__)
     
    t = Test()
    t.prt()
    

    这里的self和runoob的作用是一样的。

    原来的问题是:怎么区分类中函数和非类中的函数,我怎么知道这第一个参数指的是谁:是self,还是我传进来的参数。经过实践可知:
    在这里插入图片描述
    和人家例子一样,没毛病


    在这里插入图片描述
    我想让这个r是我传进来的参数,出错了,说是只能有一个参数,但是我给了两个,也就是说我这个12算是第二个参数。行呢,大概明白了:在类中的参数,第一就是默认指的是,指向类的参数self,想要传啥再从后面加


    在这里插入图片描述
    普通函数没这个self默认的。
    在这里插入图片描述
    这会可以顺利的传参数了。


    在这里插入图片描述
    然后有突发奇想,握草,这回有意思了,这是咋回事,我也不知道,


    行吧,这最后一个其实牵扯到了静态函数,传送门:讲的挺清楚的

    展开全文
  • 方法是对类中定义函数的称呼,有别于一般函数的是,它的第一参数是固定的,表示实例化后实例本身。 什么方法的第一参数必须指代实例本身的参数

    类方法是对类中定义的函数的称呼,有别于一般函数的是,它的第一个参数是固定的,表示类实例化后实例本身。
    为什么类方法的第一个参数必须为指代实例本身的参数?
    这里要介绍一下类中的变量类型
    类中的变量有两种类型:类变量实例变量
    类变量
    在类方法外,命名方式和普通变量一样,在类方法内使用 “类.变量” 的方式表示。
    实例变量
    带有 “self” 前缀的即为 实例变量 。因为它要带有 “self” 前缀,所以它必定位于类方法内。

    实例变量 是类实例化后拥有的变量,适用范围只限于一个实例内,多个实例不共享。
    类变量 的使用不需要类实例化,且类实例化后,多个实例共享类变量。

    先看类变量 的使用不需要类实例化
    定义,__init__函数是内置方法,效果是运行类后自动运行其函数,不用像别的函数那样 显式调用
    显示调用:若要使用A中foo的方法必须a.foo(),其中a.foo()为显示调用

    class A(object):
        class_var = 0
        def __init__(self):
            A.class_var += 1
        def foo(self):
            print("Axxx.class_var is {}".format(id(A.class_var)))
            print("self.class_var is {}".format(id(self.class_var)))
        def bar(self):
            print("Total is {}".format(A.class_var))
            print("self is {}".format(self.class_var))
    a=A()
    

    运行

    A
    a.bar()
    

    结果是

    Total is 1
    self is 1
    

    可以看到 类变量 使用不需要类实例化,并且被实例化后的实例共享

    类变量 在与 实例变量 值不同前,其id与 实例变量 保持一致,即共享同一个存储单元
    运行

    a.foo()
    

    结果

    Axxx.class_var is 140726138671968
    self.class_var is 140726138671968
    

    再次验证

    class A(object):
        class_var = 0
        def __init__(self):
            A.class_var += 1
            self.class_var += 1
        def foo(self):
            print("Axxx.class_var is {}".format(id(A.class_var)))
            print("self.class_var is {}".format(id(self.class_var)))
        def bar(self):
            print("Total is {}".format(A.class_var))
            print("self is {}".format(self.class_var))
    a=A()
    a.foo()
    a.bar()
    
    Axxx.class_var is 140726138671936
    self.class_var is 140726138671968
    Total is 1
    self is 2
    

    实例变量 值被加了两次,然后我们调换A.class_var += 1 和 self.class_var += 1 位置

    class A(object):
        class_var = 0
        def __init__(self):
            self.class_var += 1
            A.class_var += 1
        def foo(self):
            print("Axxx.class_var is {}".format(id(A.class_var)))
            print("self.class_var is {}".format(id(self.class_var)))
        def bar(self):
            print("Total is {}".format(A.class_var))
            print("self is {}".format(self.class_var))
    a=A()
    a.foo()
    a.bar()
    

    结果是

    Axxx.class_var is 140726138671936
    self.class_var is 140726138671936
    Total is 1
    self is 1
    

    实例变量 值被加了一次,与类变量 的值保持不变,所以它们的id也相同。

    展开全文
  • python的方法中定义函数

    千次阅读 2020-08-01 22:40:04
    代码: class A(): def run(self): ...注意类方法和普通函数的区别,python类的方法必须要带self参数,否则会报错xxx() takes 0 positional arguments but 1 was given,原因:Python在类中定义.

    代码: 

    class A():
        def run(self):
            def p():
                print('hello')
            
            p()
            
            
    a = A()
    a.run()

    输出:

    hello

    注意类中方法和普通函数的区别,python类的方法必须要带self参数,否则会报错xxx() takes 0 positional arguments but 1 was given,原因:Python在类中定义方法的时候,方法会被传进一个参数,即当前对象的地址,所以一般在类中定义方法的时候,必须在方法中至少定义一个参数。一般情况下我们将其命名为"self",但是实例方法的第一个参数不一定要叫self,其实完全可以叫任意参数名,比如:a,b,c等等,只是约定俗成的把该参数命名为self,因为这样使代码具有更好的可读性。

    参考

    展开全文
  • Python函数中定义参数的四种方式

    千次阅读 2020-02-29 22:00:10
    Python中函数参数定义主要有四种方式...的值(实际参数),而且顺序必须相同,也就是说这种调用方式,形参和实参的个数必须一致,而且必须一一对应,也就是说第一个形参对应这第一个实参。例如: def a(x,y):p...

    Python中函数参数的定义主要有四种方式:

    1. F(arg1,arg2,…)

    这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等
    的值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,也就是说第一个形参对应这第一个实参。例如:

    def a(x,y):print x,y
    

    调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错。

    1. F(arg1,arg2=value2,…)

    这种方式就是第一种的改进版,提供了默认值,例如:

    def a(x,y=3):print x,y
    

    调用该函数,a(1,2)同样还是x取1,y取2,但是如果a(1),则不会报错了,这个时候x还是1,y则为默认的3。上面这俩种方式,还可以更换参数位置,比如a(y=4,x=3)用这种形式也是可以的。

    1. F(*arg1)

    上面两种方式是有多少个形参,就传进去多少个实参,但有时候会不确定有多少个参数,则此时第三种方式就比较有用,它以一个*加上形参名的方式来表示这个函
    数的实参个数不定,可能为0个也可能为n个。注意一点是,不管有多少个,在函数内部都被存放在以形参名为标识符的元组中。

    def a(*x):print x
    
    >>> a(1,2,3)
    (1, 2, 3)
    >>> a(x=1,y=2,z=3)
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: a() got an unexpected keyword argument 'x'
    
    1. F(**arg1)
      形参名前加两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中,这时调用函数的方法则需要采用arg1=value1,arg2=value2这样的形式。
    def a(**x):print x
    
    >>> a(x=1,y=2,z=3)
    {'y': 2, 'x': 1, 'z': 3} #存放在字典中
    >>> a(1,2,3) #这种调用则报错
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: a() takes exactly 0 arguments (3 given)
    
    展开全文
  • 在类中定义多个构造函数

    千次阅读 2019-08-18 23:18:09
    2.方法的一个关键特性是把作为其接收的第一参数(cls). 3.方法会用到这个来创建并返回最终的实例 4.当定义一个有着多个构造函数时,应该让__init()__尽可能的简单(例如做一些赋值操作外,其它什么...
  • 问题好多,我快西去了。。。。。 python 个py文件类中函数怎么调用另个py文件类中参数self的函数
  • 函数定义以及参数

    万次阅读 2018-01-02 20:33:15
    、什么叫函数 ...预定义函数可以直接使用。 自定义函数需要,是用户自己编写。 2.什么要使用函数? (1)降低编程的难度。 通常将个复杂的大问题分解成系列的小问题,然后将小问题
  • 如何Python中定义函数及实例

    千次阅读 2020-04-20 15:35:39
    函数定义即调用 函数是封装起来的代码功能。定义时使用 def 使用函数时需要先调用,才可以使用。 def hello(): # 函数定义 print('hello1') print('hello2') print('hello3') hello() # 函数的调用,直接输...
  • C++11之前,模板和函数模板只能含有固定数量的模板参数。C++11增强了模板功能,允许模板定义中包含0到任意个模板参数,这就是可变参数模板。可变参数模板的加入使得C++11的功能变得更加强大,而由此也带来了许多...
  • python中函数定义以及如何编写函数

    万次阅读 多人点赞 2019-06-30 18:06:52
    1.函数定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段 函数能提高应用的模块性,和代码的重复利用率 Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户...
  • 在定义函数时定义形参,调用函数时传递实参;函数返回值通过return获得;不带返回值时定义空类型。函数调用形式函数名 (实参表列)。C语言可以嵌套调用函数。调用函数时又调用该函数本身递归,必须有退出条件...
  • 函数定义 函数与过程 返回值与返回值类型 前向引用 内部/内嵌函数 函数装饰器 传递函数 参数的种类 位置参数 参数默认值 命名关键字参数 关键字参数:**others,便于函数功能的扩展 任意的参数列表 *...
  • 定义一函数的指针类型: 就像自定义数据类型一样,我们也可以先定义一函数指针类型,然后再用这个类型来申明函数指针变量。 我先给你个自定义数据类型的... //int* 类型定义个PINT的别名 int main
  • 构造函数的作用是创建的对象时进行对象初始化的。 C++ ,每个都有且必须有构造函数。如果用户没有自行编写构造函数,则 C++ 自动提供...构造函数也是函数, 所以在定义时可以将其定义为参数和无...
  • 函数中的声明和变量的定义

    千次阅读 2019-04-14 19:44:13
    某些编程语言里,函数声明和函数定义区分开的,函数声明包括提供对函数名,参数的名字(传统上还有参数的类型),但不必给出函数的任何代码,具体的代码通常属于函数定义的范畴。 ​ 声明和定义有区别的...
  • 函数声明和定义一般都有参数,C语言函数声明关注的是函数返回值类型、...第一种:常用的,声明和定义函数参数名称均一致。 int add(int a, int b);   // 函数声明 int add(int a, int b)    /
  • python类中定义多个构造函数

    万次阅读 2018-09-20 23:56:33
    当我们编写时,我们希望用户可以通过多种不同的方式来创建实例,而不是局限于_init_()方法提供的种。这个时候,就需要我们创建多个构造函数了。 &nbsp;&nbsp;&nbsp;&nbsp;下面是...
  • python中函数定义和调用注意事项

    千次阅读 2018-08-10 16:37:27
    目录 1.函数的定义注意事项 2.函数调用的注意事项 3.函数参数传递的本质 4.匿名的函数lambda的使用 ... "函数帮助说明" #一般放在函数第一行,冒号里用来对函数功能注意描述 函数体 #如果需要返回值,有r...
  • Python函数定义-位置参数-返回值

    千次阅读 2019-05-04 20:37:38
    函数在编程语言就是完成特定功能的个词句组(代码块),这组语句可以作为个单位使用,并且给它取个名字。可以通过函数程序的不同地方多次执行(这叫函数的调用)。函数在编程语言有基本分为:预定义函数...
  • 对象作为函数参数

    千次阅读 2017-02-21 21:02:14
    网上看见段代码,是关于对象作为函数参数,其中有几点知识,贴出来大家一起学习。 直接来看代码: #include #include using namespace std; class people { private: char *name; int age; public: ...
  • 函数参数的默认值

    千次阅读 2018-01-21 21:59:47
    ES6 之前,不能直接为函数参数指定默认值,只能采用变通的方法。 function log(x, y) { y = y || 'World'; console.log(x, y);}log('Hello') // Hello Worldlog('Hello', 'China') // Hello Chinalog('Hello', ''...
  • Shell脚本函数定义函数参数

    千次阅读 2017-07-06 15:46:45
    这篇文章主要介绍了Shell脚本函数定义函数参数,分别介绍了2种自定义函数的方法,以及定义带返回值函数的方法,需要的朋友可以参考下 、Shell函数 本教程目前为止所有脚本都是从头到尾执行。这样做很好,...
  • 函数参数为数组

    千次阅读 2020-03-05 18:02:09
    函数定义 函数定义时有四种方式: 方式: void testfunc(int a[], int size) 方式二: void testfunc(int* a, int size) 方式三: void testfunc(int a[10], int size) 方式四: template<class T> void ...
  • 成员函数参数的默认值是声明里赋,还是在定义里? class CAbc {  public:  static int m_abc;  CAbc(){}  static void set(int abc);    int fn(int a,int b=0,int c=5);  //int fn(in
  • HTML的函数使用基础 函数实质上是个类似于单独的逻辑单元的JavaScript代码,使用...JavaScript函数是由关键字function、函数名加参数以及置于大括号的需要执行的段代码定义的。定义函数的基本语...
  • Python中定义Main函数三部分)

    万次阅读 2019-05-24 20:49:23
    许多语言,如C,C++,Java以及其他的一些语言,都会定义一个叫做main()的函数,当编译程序时,操作系统会自动调用该函数。此函数通常被称为入口点(entry point),因为它是程序进入执行的起始位置。...
  • linux shell 可以用户定义函数,然后shell脚本可以随便调用。Shell 函数定义的语法格式如下: [function] funname [()]{ 函数体 [return int;] } 格式1: 简化写法,不写 function 关键字: 函数名(){ ...
  • python函数定义参数的几种方式

    千次阅读 2017-04-01 17:47:03
    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解...
  • 的名字必须由大写字母开头而单词的其他字母均小写; 如果名称由多个单词组成,则每个单词的首字母均应大写例如TestPage; 如果名称包含单词缩写,则这个所写词的每个字母均应大写,命名时应尽量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,570,327
精华内容 628,130
关键字:

在类中定义函数的第一参数为