精华内容
下载资源
问答
  • Python类对象创建和使用

    千次阅读 2019-07-08 11:29:53
    创建对象的根本途径是构造方法,调用某个的构造方法即可创建这个的对象,Python 无须使用 new 调用构造方法。 前面章节中,我们已经创建了名为 Python: class Person : '这是一个学习Python定义的一...

    创建对象的根本途径是构造方法,调用某个类的构造方法即可创建这个类的对象,Python 无须使用 new 调用构造方法。

     

    前面章节中,我们已经创建了名为 Python 的类:

      class Person :      '这是一个学习Python定义的一个Person类'      # 下面定义了一个类变量      hair = 'black'      def __init__(self, name = 'Charlie', age=8):          # 下面为Person对象增加2个实例变量          self.name = name          self.age = age      # 下面定义了一个say方法      def say(self, content):          print(content)

    如下代码示范了调用 Person 类的构造方法:

      # 调用Person类的构造方法,返回一个Person对象  # 将该Person对象赋给p变量  p = Person()

    创建对象之后,接下来即可使用该对象了。Python 的对象大致有如下作用:

    • 操作对象的实例变量(包括访问实例变量的值、添加实例变量、删除实例变量)。
    • 调用对象的方法。

    对象访问方法或变量的语法是:对象.变量|方法(参数)。在这种方式中,对象是主调者,用于访问该对象的变量或方法。

    下面代码通过 Person 对象来调用 Person 的实例和方法:

      # 输出p的name、age实例变量  print(p.name, p.age)  # Charlie 8  # 访问p的name实例变量,直接为该实例变量赋值  p.name = '李刚'  # 调用p的say()方法,声明say()方法时定义了2个形参  # 但第一个形参(self)是自动绑定的,因此调用该方法只需为第二个形参指定一个值  p.say('Python语言很简单,学习很容易!')  # 再次输出p的name、age实例变量  print(p.name, p.age)  # 李刚 8

    上面程序开始访问了 p 对象的 name、age 两个实例变量。这两个变量是何时定义的?留意在 Person 的构造方法中有如下两行代码:

    self.name = name
    self.age = age

    这两行代码用传入的 name、age 参数(这两个参数都有默认值)对 self 的 name、age 变量赋值。由于 Python 的第一个 self 参数是自动绑定的(在构造方法中自动绑定到该构造方法初始化的对象),而这两行代码就是对 self 的 name、age 两个变量赋值,也就是对该构造方法初始化的对象(p 对象)的 name、age 变量赋值,即为 p 对象增加了 name、age 两个实例变量。

    上面代码中通过 Person 对象调用了 say() 方法,在调用方法时必须为方法的形参赋值。但 say() 方法的第一个形参 self 是自动绑定的,它会被绑定到方法的调用者(p),因此程序只需要为 say() 方法传入一个字符串作为参数值,这个字符串将被传给 content 参数。

    大部分时候,定义一个类就是为了重复创建该类的对象,同一个类的多个对象具有相同的特征,而类则定义了多个对象的共同特征。从某个角度来看,类定义的是多个对象的特征,因此类不是一个具体存在的实体,对象才是一个具体存在的实体。完全可以这样说:你不是人这个类,我也不是人这个类,我们都只是人的对象。

    由于 Python 是动态语言,因此程序完全可以为 p 对象动态增加实例变量只要为它的新变量赋值即可;也可以动态删除实例变量(使用 del 语句即可删除)。例如如下代码:

      # 为p对象增加一个skills实例变量  p.skills = ['programming', 'swimming']  print(p.skills)  # 删除p对象的name实例变量  del p.name  # 再次访问p的name实例变量  print(p.name)  # AttributeError

    上面程序先为 p 对象动态增加了一个 skills 实例变量,即只要对 p 对象的 skills 实例变量赋值就是新增一个实例变量。接下来程序中调用 del 删除了 p 对象的 name 实例变量,当程序再次访问 print(p.name) 时就会导致 AttributeError 错误,并提示:'Person' object has no attribute 'name'

    Python对象动态添加变量和方法

    Python 是动态语言,当然也允许为对象动态增加方法。比如上面程序中在定义 Person 类时只定义了一个 say() 方法,但程序完全可以为 p 对象动态增加方法。

    但需要说明的是,为 p 对象动态增加的方法,Python 不会自动将调用者自动绑定到第一个参数(即使将第一个参数命名为 self 也没用)。例如如下代码:

      # 先定义一个函数  def info(self):      print("---info函数---", self)  # 使用info对p的foo方法赋值(动态绑定方法)  p.foo = info  # Python不会自动将调用者绑定到第一个参数,  # 因此程序需要手动将调用者绑定为第一个参数  p.foo(p)  # ①    # 使用lambda表达式为p对象的bar方法赋值(动态绑定方法)  p.bar = lambda self: print('--lambda表达式--', self)  p.bar(p) # ②

    上面的第 5 行和第 11 行代码分别使用函数、lambda 表达式为 p 对象动态增加了方法,但对于动态增加的方法,Python 不会自动将方法调用者绑定到它们的第一个参数,因此程序必须手动为第一个参数传入参数值,如上面程序中 ① 号、② 号代码所示。

    如果希望动态增加的方法也能自动绑定到第一个参数,则可借助于 types 模块下的 MethodType进行包装。例如如下代码:

      def intro_func(self, content):      print("我是一个人,信息为:%s" % content)  # 导入MethodType  from types import MethodType  # 使用MethodType对intro_func进行包装,将该函数的第一个参数绑定为p  p.intro = MethodType(intro_func, p)  # 第一个参数已经绑定了,无需传入  p.intro("生活在别处")

    正如从上面代码所看到的,通过 MethodType 包装 intr_func 函数之后(包装时指定了将该函数的第一个参数绑定为 p),为 p 对象动态增加的 intro() 方法的第一个参数己经绑定,因此程序通过 p 调用 intro() 方法时无须传入第一个参数,就像定义类时己经定义了 intro() 方法一样。

    推荐学习路线Python类对象的创建和使用

    展开全文
  • 创建语法: ... 内的变量和方法能被此类所创建的所有实例所共同拥有  说明:  类名必须是标识符(与变量名命名规则相同,建议首字母大写)  类名实质上就是变量,它绑定一个实例 ...

    类的创建语法:

      class 类名(继承列表)

              """类文档字符串"""

      类的作用:

             可以用类创建一个或多个此类的对象(实例)

             类内的变量和方法能被此类所创建的所有实例所共同拥有

      说明:

            类名必须是标识符(与变量名命名规则相同,建议首字母大写)

            类名实质上就是变量,它绑定一个类实例

            类的定义最后面要加上两个空格以告诉解释执行器,类的定义已经结束

    构造函数:

           构造函数的调用表达式

           类名([创建传参列表])     []里的内容代表可省略

     作用:

           创建这个类别的实例对象,并返回此实例对象的引用关系

     

      示例:

            class Dog:  #定义一个类

         pass

           dog1 = Dog()  #用类来创建一个对象用dog1绑定

           print(id(dog1))  #打印dog1所在的内存地址

           dog2 = Dog()   #创建第二个对象 用dog2绑定  

           print(id(dog2)) 

           print(dog1 is dog2)   #判断两只狗是不是同一只狗

     

      实例说明:

           实例有自己的作用域或名字空间,可以为该实例添加实例变量(也叫属性)

           实例可以调用类的方法

           实例可以访问类中的类变量

    实例变量(属性 attribute)

           每个实例可以有自己的变量,成为实例变量(属性)

      属性的使用语法:

           实例.属性名

      属性的赋值规则:(同变量规则相同)

            1、首次为属性赋值则创建此属性

           2、再次为属性赋值则改变属性的绑定关系

    示例:

          class Dog:

              pass

          dog1 = Dog()

         dog1.kinds = "京巴" #为dog1绑定的实例添加kinds属性

         dog1.color = "白色"  #添加属性

         print(dog1.kinds,dog1.color) #访问属性

         dog1.color = '黄色'  #修改dog1.color的绑定关系

         print(dog1.color)

     

    实例方法 method

      语法:

        class 类名(继承列表):

            def 实例方法名(self,参数1,参数2,...):

                语句块

      作用:

        用于描述一个对象的行为,让此类型的全部对象拥有相同的行为

      说明:

        实例方法的实质是函数,是定义在类内的函数

        实例方法的第一个参数代表调用这个方法的实例,一般会命名为'self'

     

    实例方法的调用语法:

      实例.实例方法名(调用参数)

      或

      类名.实例方法名(实例,调用参数)

    示例:

    1、

    # instance_method.py

    #此示例示意实例方法的定义方式和调用方法

    class Dog():

        """这是一个类,用来描述一个小动物的行为"""

          def eat(self,food):

            """小狗能够有吃东西的行为"""

                 print("小狗吃了",food)

          def sleep(self,hour):

              print("小狗睡了",hour,"小时")

         dog1 = Dog()   #创建一个示例对象

         dog1.eat("骨头")   #让狗吃东西

        dog1.sleep(1)    #让够睡觉

        dog2 = Dog()   #创建一个示例对象

        dog2.eat("包子")   #让狗吃东西

       dog2.sleep(2) 

       dog3 = Dog()   #创建一个示例对象

       Dog.eat(dog3,"狗粮")   #让狗吃东西

       Dog.sleep(dog2,3) 

    初始化方法

      作用:

        对新创建的对象添加属性等必须的资源

      语法形式:

        class 类名:

            def __init__(self[,参数列表]):

                语句块

            [] 代表其中内容可省略

      说明:

        初始化方法必须为__init__不可改变

        初始化方法会在构造函数创建实例后自动调用,且将实例吱声通过第一个参数self传入__init__方法

        构造函数的实参将通过__init__方法的参数列表传到__init__方法中

        初始化方法内如果需要return语句返回,则必须返回None

     

    展开全文
  • python里面建立类创建对象继承

    千次阅读 2017-05-08 16:02:12
    的定义和继承

    首先定义一个类:

    每个类下面定义方法,

    每个类下面首先定义一个构造方法,再定义其他的方法一般有set方法和get方法。

    Set方法用于重新设置变量的值,尤其当一个变量定义成私有变量的时候只能通过set方法来改变值

    Get方法用于输出结果


     

    # coding:utf8
    '''2.编写一个程序,用于创建一个名为Employee的父类和两个名为
    Manager和Director的子类。Employee类包含3个属性和一个方法,属
    性为name、basic(基本工资)和address,方法名为show(),用于显示这些属性的值。
    Manager类有一个称为department(部门)的附加属性。Director
    类有一个称为transportAllowance(交通津贴)的附加属性。创建Manager和Director类的对象,并显示其详细信息。
    定义一个父类下面定义一些方法
    '''
    class Employee():
        def __init__(self,name,basic,address):
            self.name=name
            self.basic=basic
            self.address=address
        def show(self,name,basic,address):
            print(self.name)
            print(self.basic)
            print(self.address)
    class Manager(Employee):
        def __init__(self,name,basic,address,department):
            Employee.__init__(self,name,basic,address)
            self.department=department
        def show2(self,name,basic,address,department):
            self.show('cs',1000,'beijing')#继承父类的show方法
            print self.department
    class Director(Employee):
        def __init__(self,name,basic,address,transportAllowance):
           Employee.__init__(self,name,basic,address)
           self.transportAllowance=transportAllowance
        def show3(self,name,basic,address,transportAllowance):
            self.show('cs',1000,'beijing')
            print(self.transportAllowance)
    base=Employee('cs',1000,'beijing')
    base.show('cs',1000,'beijing')
    m=Manager('cs',1000,'beijing','c1')
    m.show2('cs',1000,'beijing','c1')
    d=Director('cs',1000,'beijing','c2')
    d.show3('cs',1000,'beijing','c2')
    
    

    展开全文
  • python批量创建对象方法

    千次阅读 2018-11-09 21:32:21
    数据分析时,有时需要批量创建一些对象,比如DataFrame,List等,一个个手动命名是比较麻烦的。其实,可以用for循环批量创建,代码如下: import pandas as pd for i in range(10): locals()['df' + str(i)] = pd....

    数据分析时,有时需要批量创建一些对象,比如DataFrame,List等,一个个手动命名是比较麻烦的。其实,可以用for循环批量创建,代码如下:

    import pandas as pd
    
    for i in range(10):
        locals()['df' + str(i)] = pd.DataFrame()
        print(locals()['df' + str(i)].shape)
    

    上面的pd.DataFrame()只是示例,根据实际需求变更

    展开全文
  •  --在方法(即函数)里面定义一个以“self.”开头的变量;2.如何使用该对象变量?--使用“对象名.对象变量名”eg.#!/usr/bin/python # -*- coding: UTF-8 -*- class JustCounter: def count(self): self.num...
  • Python中的的定义和对象创建

    万次阅读 多人点赞 2018-08-16 17:35:59
    面向对象中两个重要的概念: 1. :对一事物的描述,是抽象的、概念上的定义。比如做石膏像的模型 ...1.创建类主要由类名,属性,方法组成,当然创建一个时,属性和方法可以选择的。 cla...
  • Python 对象

    万次阅读 多人点赞 2019-04-10 16:49:40
    对象的理解与封装特性 面向对象编程语言 - : 一个模板, (人类)---是一个抽象的, ... - 方法: (表示这物体可以做的事情, eg: 吃饭, 睡觉,学习) 1). 定义:class: from collections import Count...
  • Python创建和使用方法

    千次阅读 2019-03-13 06:56:31
    面向对象编程(OOP)是最有效的软件编写方法之一,我们会使用到(CLASS)来定义出一大对象都有的行为,当我们基于创建对象时,每个对象都具备这种通用的行为。 然后根据需要赋予每个对象独特的个性。根据来...
  • python类与面向对象编程

    千次阅读 2016-07-16 18:44:24
    与面向对象编程(class)是python中的一种内建模块,在许多语言甚至在一些库中都用到了python的...一切皆对象python中class关键字定义一个,在class中有def定义的函数,也就是方法。那么具体什么是
  • Python创建对象:对象名称=() class Point: pass p1 = Point() p2 = Point() 在创建对象时,Python解释器会自动执行以下操作: 1.创建对象----为对象在内存中分配空间; 2.初始化方法(init)—为对象的属性设置...
  • python3 动态创建类对象并调用函数

    千次阅读 2019-11-07 11:16:09
    1. 首先import相关模块`import importlib` 2. 加载你想要加载的模块`model = importlib.import_module(模块名称)` ...4. 创建类对象的实例`api_instance = api_class()` 5. 调用类对象的函数`api_instance.get...
  • python批量创建对象

    千次阅读 2019-06-18 17:52:51
    1、函数内(locals): class A(): def __init__(self): self.val = 10 for i in range(10): locals()[f'x{i}'] = A() ...2、内: class A(): def __init__(self): self.val = 10 class B(): ...
  • python类对象方法、属性之对象

    千次阅读 多人点赞 2016-03-09 10:49:38
    python中一切皆为对象,所谓对象:我们自己就是一个对象,我们玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...   我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的...
  • python中从变量到对象的连接称作引用。也就是说,引用是一种关系,以内存中的指针的形式实现。具体而言:变量是一个系统表的元素,拥有指向对象的连接的空间。对象是分配的一块内存,有足够的空间去表示它们所代表的...
  • Python中的类对象、实例对象、属性、方法
  • Python同时创建多个对象的想法

    千次阅读 多人点赞 2017-10-09 23:58:18
    利用字典创建的多个对象,从而大大的方便了创建对象。并指出了字典的fromkeys方法的错误。
  • python创建类的两种方法

    千次阅读 2018-08-22 19:33:21
    python里,是面向对象的基础。 创建类第一种普遍方式可能都清楚,用class关键字: #第一种方法创建类 class A(object): def __init__(self, name): self.name = name f = A("lkk") 这样就简单...
  • Python 创建类对象实例的过程

    万次阅读 2018-04-20 16:19:35
    1、问题由来 有一次在的定义时将一个方法外的属性前加上了selfclass Myclass(object): self.test='hello' #错误使用self def __init__(self, x): self.x = x c1 = Myclass(11) 运行时报错:Traceback (most...
  • 学习笔记之——Python对象的理解

    千次阅读 多人点赞 2019-01-16 20:26:13
    方法三、对象1. 对象创建四、参考资料 这个还有待完善。 一、 面向对象的含义和特性 面向对象是将世界中的具体事物进行抽象,从而能够更好的帮助我们归纳总结,解决复杂问题的一种解决问题的思路。 面...
  • 是抽象的,在使用的时候通常会找到这个的一个具体的存在,使用... 可以直接使用与对象的关系: 就是创建对象的模板的构成: 1.的名称:类名 2.的属性:一组数据 3.方法:允许对进行操作的...
  • Python类属性、类方法和静态方法

    千次阅读 多人点赞 2019-06-05 15:12:54
    Python类属性、类方法和静态方法Python中,一切皆对象。通过类创建出来的对象是实例对象本身也是对象,称为类对象。 一、属性 对象都有属性,我们常说的对象属性是实例对象拥有的属性,又称为实例属性。...
  • Python类对象-给你介绍个对象

    千次阅读 多人点赞 2021-02-07 22:09:50
    大过年的,来都来了,要不给你介绍个对象? 文章目录 面向对象 的定义 的实例化 方法 的特殊方法 的继承 的关系
  • 这里写自定义目录标题本次链接全集初衷实现基础动手补充:生成对象方法、eval()、exec()及其相关函数新的问题 本次链接全集 为了方便查阅,在此先放个链接全家桶。 【转载】 Python动态生成变量1 Python动态变量...
  • 一个类创建对象可以是另一个类创建对象的属性 需求 1. 士兵有一把AK47 2. 士兵可以开火 3. 枪能够发射子弹 4. 枪装填子弹 # coding:utf-8 class Gun: def __init__(self, model): self.model = model ...
  • python中的数据都是以对象方法存在,对象就是一个既有属性也有方法,比如list一个列表,列表有append,切片的方法。我也可以同样创建属于自己的,然后可以直接初始化性,调用里面的方法,及属性。 1、的...
  • # 创建士兵 Mak = Solder('makchikin') # 创建枪 AK47 = Gun('AK47') # Mak获得AK47 Mak.gun = AK47 # 开枪60次 for i in range(60): # 查询子弹数量 bulletsNum = Mak.gun.queryBulletsNum() if ...
  • Python创建对象与赋值

    千次阅读 2017-05-25 23:51:03
    Python是面向对象的语言,在Python在一切皆为对象。函数、属性都可以作为对象赋值给变量,并且规定参数的传递都是传递对象... python与C/C++,java等强类型语言不同,在创建对象的时候不需要指定类型。而是通过对象的
  • Python中,可以通过class关键字定义自己的,然后通过自定义的类对象类创建实例对象python创建类 创建一个Student的,并且实现了这个的初始化函数”__init__”: classStudent(object):
  • python类对象和实例对象

    千次阅读 2019-04-22 15:00:56
    类对象支持两种操作:属性引用和实例化。... 有效的属性名称是类对象创建时存在于命名空间中的所有名称。 因此,如果定义是这样的: """A simple example class""" i = 12345 def f(self): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 524,265
精华内容 209,706
关键字:

python类方法创建对象

python 订阅