精华内容
下载资源
问答
  • Python中的类的定义和对象创建

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

    面向对象中两个重要的概念:

    1.类   :对一类事物的描述,是抽象的、概念上的定义。比如做石膏像的模型
    2.对象:实际存在的该类事物的每个个体,因而也称实例(instance)。比如石膏像

    二者的关系:对象是由类派生的、创建的。一个类可以创建无穷多个对象,每个对象都属于类。

     1.创建类和创建类对象

    1.创建类,类主要由类名,属性,方法组成,当然创建一个类时,属性和方法可以选择的。
    class Person:
        def cry(self):  #类方法:跟函数的定义类似,但是self参数自带的,这也是类的方法和普通方法的区别。
            print("I can cry")
        def speak(self):
            print("I can speak:%s"%(self.word))
    
    ---------创建对象-----------------------------------------------------------------------
    tom =Person()  #创建对象,直接类名(),不用像java中还要new,所以python更加简洁
    tom.cry()     #调用对象的方法
    tom.word="hahah"
    tom.speak()
    tom.age =18  #给对象添加属性 ,属性不用在类定义时声明,但这种方法给对象赋值麻烦,每个对象都要赋值。
    tom.age =19  #上面已经给tom添加过age属性,再次属于调用,重新赋值。
    
    ----------执行结果-------------------------------------------------------------------------
    '''
    I can cry
    I can speak:hahah
    '''
    
    2.给类初始化属性,在对象创建时就给对象设定了一些默认值。这样不用给每个对象都添加属性了,比如每个Person都是china,sex都是male.
     _init_(self)该类的方法有点类似java中类的构造器,可以给类的对象赋初始值。
    ------------------------------------------------------------------------------------------
    class Person1:
        def __init__(self):  #_init_(self),主要给类初始化一些属性,对象创建时自动调用该方法执行
            self.country ="china"
            self.sex = "male"
    
        def speak(self):
            print("I am  from %s  ,wuwuwuwuu"%self.country)
    -------------创建对象----------------------------------------------------------------------
    jack = Person1()
    jack.speak()
    print(jack.country,jack.sex)
    
    tom=Person1()
    tom.speak()
    print(tom.country,tom.sex)
    --------------执行结果如下:----------------------------------------------------------------
    '''
    I am  from china  ,wuwuwuwuu
    china male
    I am  from china  ,wuwuwuwuu
    china male
    '''
    
    3.属性虽然初始化了,但是固定死的,而实际每个对象的属性就不同。
      所以通过初始化时调用参数的形式,给每个对象赋不同的属性值
    
    class Person2:
        def __init__(self,name,age): 
            self.age =age   #这种用法类似java中的this.age=age.self意思可以理解为当前对象
            self.name = name #表示将当前对象传进来的参数name的值赋给当前对象的属性name
            self.country = "china" #还是可以给类的每个对象都赋一个默认值。
    
        def speak(self):
            print("name=%s,age=%d"%(self.name,self.age))
    -----------创建对象------------------------------------------------------------------------
    p1 = Person2("allen",19)
    p2 = Person2("sherry",22)
    p3 = p2  #让p3=p2.对象的赋值
    
    p1.speak()
    p2.speak()
    
    print("p1:",p1)  #直接打印对象 ,打印的是对象在内存中地址。
    print("p2:",p2)
    print("p3:",p3) #发现p3的地址跟p2的地址一样。
    
    '''执行结果如下:
    name=allen,age=19
    name=sherry,age=22
    p1: <__main__.Person2 object at 0x000001CBA3508BE0>
    p2: <__main__.Person2 object at 0x000001CBA3508CF8>
    p3: <__main__.Person2 object at 0x000001CBA3508CF8>
    '''
    

    总结:

    • __init__()方法,在创建一个对象时默认被调用,类似Java中构造器。不需要手动调用
    • __init__(self)中,默认有1个参数名字为self,必须写。如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,age,name).第一个self不需要手动传参 
    • __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
    • python中一个类中只能有一个__init__方法,不支持该方法的重载(类似java中构造器的重载)
    • 每一个对象 都有自己 独立的内存空间保存各自不同的属性
    • 多个对象的方法在内存中只有一份,在调用方法时,需要把对象的引用 传递到方法内部

    2.新式类与旧式(经典)类

    object 是 Python 为所有对象提供的 基类,提供有一些内置的属性和方法,可以使用 dir 函数查看

    • 新式类:以 object 为基类的类,推荐使用
    • 经典类:不以 object 为基类的类,不推荐使用

    • 在 Python 3.x 中定义类时,如果没有指定父类,会 默认使用 object 作为该类的 基类 —— Python 3.x 中定义的类都是 新式类

    • 在 Python 2.x 中定义类时,如果没有指定父类,则不会以 object 作为 基类

    新式类 和 经典类 在多继承时 —— 会影响到方法的搜索顺序

    为了保证编写的代码能够同时在 Python 2.x 和 Python 3.x 运行!
    今后在定义类时,如果没有父类,建议统一继承自 object

    class 类名(object):    
        pass
    
    #尽量不要用下面这种老是写法,虽然不会报错,但是不推荐
    class 类名:    
        pass

    统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。 

    展开全文
  • 如何定义和创建对象

    千次阅读 2018-11-05 16:40:43
    【10】类定义和对象创建 类,定义了一个功能模块。 10-1 成员变量:描述对象的属性。 10-2 成员方法:描述对象的行为。 package bike; /* * 类定义和对象创建 */ public class bike { String color="蓝色&...

    【10】类定义和对象创建
    类,定义了一个功能模块。
    10-1 成员变量:描述对象的属性。
    10-2 成员方法:描述对象的行为。

    package bike;
    /*
     * 类定义和对象创建
     */
    public class bike {
    	String color="蓝色";
    	//bike所具有的方法
    	void getMes()
    	{
    		System.out.println("类的方法");
    	}
    	public static void main(String[] args)
    	{
    		//创建一个bike类的对象实例,名称b,即对象引用
    		bike b=new bike();
    		System.out.println(b.color);
    		//调用bike类里的getMes()方法
    		b.getMes();
    	}
    
    }
    
    

    在这里插入图片描述

    展开全文
  • 和对象定义类、创建对象

    千次阅读 2018-07-09 19:35:00
    和对象对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征行为的一组对象抽象定义,提出了另外一个新的概念——类类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象1. 类人以类聚 ...

    类和对象

    面向对象编程的2个非常重要的概念:类和对象

    对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

    类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象

    1. 类

    人以类聚 物以群分。
    具有相似内部状态和运动规律的实体的集合(或统称为抽象)。 
    具有相同属性和行为事物的统称
    

    类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象

    2. 对象

    某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。
    
    可以是直接使用的

    3. 类和对象之间的关系

    小总结:类就是创建对象的模板

    4. 练习:区分类和对象

    奔驰汽车 类
    奔驰smart 类 
    张三的那辆奔驰smart 对象
    狗 类
    大黄狗 类 
    李四家那只大黄狗 对象 
    水果 类
    苹果 类 
    红苹果 类 红富士苹果 类 
    我嘴里吃了一半的苹果 对象
    

    5. 类的构成

    类(Class) 由3个部分构成

    • 类的名称:类名
    • 类的属性:一组数据
    • 类的方法:允许对进行操作的方法 (行为)

    6. 类的抽象

    如何把日常生活中的事物抽象成程序中的类?

    拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

    方法:一般名词都是类(名词提炼法)

    定义类

    定义一个类,格式如下:

    class 类名:
        方法列表
    

    demo:定义一个Hero类

    # class Hero:  # 经典类(旧式类)定义形式
    # class Hero():
    
    class Hero(object):  # 新式类定义形式
        def info(self):
            print("英雄各有见,何必问出处。")
    

    说明:

    • 定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,前两行注释部分则为经典类;

    • object 是Python 里所有类的最顶级父类;

    • 类名 的命名规则按照"大驼峰命名法";

    • info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象

    创建对象

    python中,可以根据已经定义的类去创建出一个或多个对象。

    创建对象的格式为:

    对象名1 = 类名()
    对象名2 = 类名()
    对象名3 = 类名()
    

    创建对象demo:

    class Hero(object):  # 新式类定义形式
        """info 是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self"""
        def info(self):
            """当对象调用实例方法时,Python会自动将对象本身的引用做为参数,
                传递到实例方法的第一个参数self里"""
            print(self) 
            print("self各不同,对象是出处。")
    
    
    # Hero这个类 实例化了一个对象  taidamier(泰达米尔)
    taidamier = Hero()
    
    # 对象调用实例方法info(),执行info()里的代码
    # . 表示选择属性或者方法
    taidamier.info()
    
    print(taidamier)  # 打印对象,则默认打印对象在内存的地址,结果等同于info里的print(self)
    print(id(taidamier))  # id(taidamier) 则是内存地址的十进制形式表示

    展开全文
  • Python定义类与创建对象

    千次阅读 2019-08-06 18:12:40
    2. 创建与使用对象对象也称为实例) 1)增加或删除实例变量 2)增加实例方法 面向对象编程的三大特征:封装、继承、多态; 1. 定义类 语法格式: # 语法格式: class 类名: 执行语句... 类变量... 方法....

    目录

    1. 定义类

    2. 创建与使用对象(对象也称为实例)

    1)增加或删除实例变量

    2)增加实例方法


    面向对象编程的三大特征:封装、继承、多态;

    1. 定义类

    语法格式:

    # 语法格式:
    class 类名:
        执行语句...
        类变量...
        方法...

    类名:一个或者多个单词连接而成,每个单词首字母大写,其余字母全部小写,单词与单词之间不使用分隔符;

    类包含的类变量可以动态增加或删除,程序在类定义中为新变量赋值就是增加类变量,程序可以在任何地方为已有的类增加变量,也可以通过del语句删除已有类的类变量;

    对象的变量也可以动态增加或删除,只要对对象的新变量赋值就是增加变量,可通过del语句删除已有对象的变量;

    定义方法与定义函数相同,但类中的方法第一个参数要定义为self,用于自动指向调用该方法的对象;

    特殊的方法:__init__,这个方法叫做构造方法,用于构造该类的对象,Python通过调用构造方法生成对象;如果开发者没有定义构造方法,Python会自动为该类定义一个只包含self参数的默认的构造方法;

    2. 创建与使用对象(对象也称为实例)

    语法格式:

    对象变量 = 类名()
    # 本质是调用类里面的构造方法创建对象

    对象访问方法或者变量的语法格式: 对象.变量|方法(参数)

    class Dog:
        def __init__(self, sex="公", classification="二哈"):
            # 为Dog对象定义了两个实例变量,self表示调用该函数的对象,self.变量就是实例变量
            self.sex = sex
            self.classification = classification
    
    # 创建对象的本质是根据构造函数创建对象,所以参数值要与构造函数的参数相匹配
    # 如果不传入参数,因为有默认参数值,对象将按照默认参数值创建
    # 如果没有默认参数值,并且创建对象不传入参数值,程序将出现错误
    my_dog_1 = Dog()
    print(my_dog_1.sex, my_dog_1.classification)
    # 公 二哈
    my_dog_2 = Dog("母", "斗牛犬")
    print(my_dog_2.sex, my_dog_2.classification)
    # 母 斗牛犬

    1)增加或删除实例变量

    增加实例变量:为新变量赋值即可;

    删除实例变量:del语句;

    my_dog_2.name = "林林"
    print(my_dog_2.name)
    # 林林
    del my_dog_2.sex
    print(my_dog_2.sex)
    # 程序错误:AttributeError: 'Dog' object has no attribute 'sex'

    2)增加实例方法

    !!!为对象动态增加的方法,python不会自动将第一个参数self指向调用的对象;

    # 先定义一个函数
    def feed_food(self, type):
        if type=="breakfast":
            print("1号类型狗粮")
        elif type=="lunch":
            print("2号类型狗粮")
        else:
            print("3号类型狗粮")
    
    # 使用函数feed_food对对象my_dog_2的方法food赋值
    my_dog_2.food = feed_food
    # 手动指定self参数为调用者
    my_dog_2.food(my_dog_2, "lunch")
    # 2号类型狗粮

    使用MethodType可以将动态增加的方法设置为自动将第一个参数指向调用者:可以看到调用该方法时不需要指定第一个参数为调用者了;

    from types import MethodType
    my_dog_2.food = MethodType(feed_food, my_dog_2)
    my_dog_2.food("lunch")
    # 2号类型狗粮

    当Python对象的一个方法调用其他方法时,不可以省略self;

    class Dog:
        def __init__(self, sex="公", classification="二哈"):
            # 为Dog对象定义了三个实例变量
            self.sex = sex
            self.classification = classification
            self.health = 1
        def is_dog_healthy(self):
            if self.health == 1:
                return True
            else:
                return False
    
        def feed_food(self, type):
            # 该方法调用其他方法self不能省略
            if self.is_dog_healthy()==False:
                print("狗狗得病了需要吃好的")
            elif type == "breakfast":
                print("1号类型狗粮")
            elif type == "lunch" :
                print("2号类型狗粮")
            else:
                print("3号类型狗粮")

     

    展开全文
  • java之类的定义和对象创建

    千次阅读 2018-12-28 17:23:27
    类的基本结构  如果一切都是对象,那么是什么决定某一类对象的行为与外观呢?... 当用户创建一个Java程序时,可以通过类声明来定义类。通常,这些类里没有main方法,只有一些属性方法。一个完...
  • 【C++】C++类的定义和对象创建

    千次阅读 2018-10-11 12:38:43
    每个对象都是类的一个具体实例(Instance),拥有类的成员变量成员函数。     在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。     class是 C++ 中新增的关键字,专门用来定义类。...
  • new创建对象和直接定义的区别

    千次阅读 2015-08-04 11:10:46
    1. 声明只是表示一个对象的引用,比如我们的语句: MyClasee myclass; 这里是一个空引用,而通过new关键字可以实例化一个MyClasee的实例, 所以语句: myclass = new MyClass(); 2.栈,放的是...
  • new创建对象与直接定义的区别

    千次阅读 2016-11-11 14:03:40
    多处使用new创建对象使用完需delete销毁new创建对象直接使用堆空间,而局部不用new定义对象则使用栈空间new对象指针用途广泛,比如作为函数返回值、函数参数等频繁调用场合并不适合new,就像new申请释放内存...
  • 21天学通JAVA:类的定义和对象创建

    千次阅读 2008-12-23 08:45:00
    类的定义和对象创建本文节选自《21天学通JAVA》一书 定义一个类表示定义了一个功能模块。下面先介绍如何定义一个类,以及如何创建这个类的实例,即对象。类是通过关键字class来定义的,在class关键字后面加上类的...
  • 定义一个类只能创建一个对象

    千次阅读 2014-10-13 08:30:38
    有时我们的程序中需要定义一个类,这个类只能创建一个youxiaosh
  • 1:定义一个矩形类Rectangle:(知识点:对象创建和使用) 定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。 有2个属性:长length、宽width 通过构造方法...
  • 定义类 声明对象 创建对象 实例化对象 属性 对象调用属性或者方法 举例,下面定义类了一个类并声明属性,写了一个方法: class Person { public String name; //声明属性 public int age; //声明属性 ...
  • java在类的定义创建自己的对象?

    千次阅读 2020-01-14 17:45:28
    在书上经常看到这样的例子 ...我想知道的是,A是一个类,而main方法是A类中的一个方法,为什么可以在main方法里创建一个自己的对象?那是不是也可以使用aa.main(参数)的形式来调用它?请高人解...
  • JS创建和对象

    千次阅读 2018-07-08 17:31:34
    JavaScript 创建类/对象的几种方式在JS中,创建对象(Create Object)并不完全是我们时常说的创建对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。JS对象是一种复合类型,它允许...
  • //在执行第一行代码之前,js引擎会为我们生成一个对象。 this.username = username; this.password = password; this.getInfo = function() { alert(this.username +":
  • 变量和对象存在内存中的不同部分,并通过连接相关联。变量总是连接到对象,并且绝不会连接到其他变量上,但是更大的对象可能连接到其他的对象(例如一个列表对象能够连接到它所包含的对象)。python中从变量到对象的...
  • 经常在java程序员面试的...【答案】第一行代码创建了1个对象,第二行代码创建了2个对象;【解析】首先 String strA = "abc"; 创建了一个对象StrA并且把“abc”在内存中的地址赋值给了对象StrA,所以这个...
  • 如何创建对象和使用对象

    千次阅读 2018-07-24 09:17:25
    一: .class类 类名 属性名 类型   ...2.使用对象的属性方法 对象名.属性; String name; int age; 对象名.方法(); 3.给定义变量赋值 ren.age=18; ren.name="帅哥";  ...
  • 上回书说到我们要创建对象,就得先给对象拟定一个规划图,也就是定义一个类,在定义的时候必须说明这个类的对象们是怎么工作,有什么特征,包括内部外部的,这里就是要你真的明白钢铁是怎么炼成的了。怎么样,被...
  • 类的定义和创建

    千次阅读 2018-08-29 08:02:08
    拥有相同属性行为的对象分为一组,即为一个类 类是用来描述对象的工具,用类可以创建此类的对象(实例) * 类的创建: class语句: * 语法: class 类名(继承列表): ”’类文档字符串”’ 实例方法...
  • JS 之函数定义 & 创建对象 三种方式

    千次阅读 2016-10-20 20:15:50
    JS函数创建三种方式 JS创建对象三种方式一、javaScript 函数创建的三种方式 ; charset=UTF-8"> <title>The three ways /* 方式一、functi
  • java中类的定义对象创建

    千次阅读 2017-06-03 12:25:21
    1.类的定义: 修饰符 class 类名 {  成员变量;  成员方法; } 通常类名的用英文表示,并且首字母大写。 类的修饰符分为可访问控制符非访问控制符。 可访问控制符是:公共类修饰符public 非访问控制符有...
  • 声明对象和创建对象的区别

    千次阅读 2018-03-14 14:47:07
    2、声明对象和创建对象的区别Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这...
  • //工厂方式创建对象 function createObject(username, password) { var object = new Object(); object.username = username; object.password = password; object.getInfo = function() ...
  • C++ 类 直接定义对象与new对象的区别

    千次阅读 2015-09-01 22:02:24
    new创建对象与直接定义的区别new创建对象的特点 new创建对象需要指针接收,一处初始化,多处使用 new创建对象使用完需delete销毁 new创建对象直接使用堆空间,而局部不用new定义对象则使用栈空间 new对象...
  • 和对象 类:类的概念就是让程序设计能更清楚卖出日常生活中的事物,也可以理解为对一类事物的统称包含对于属性描述行为描述! 注解: 属性描述:描述当前类有哪些属性。 行为描述:描述当前有哪些...
  • 面向对象:类的概念和定义!

    万次阅读 多人点赞 2018-05-28 10:16:37
    面向对象的概念: 对象: Object,含有“物体”的概念,一切皆物体(对象)。对象由静态的属性动态的行为组成。 属性:行为:存储、保温 类: 一组具有相同属性行为的对象的抽象。杯子: ...
  • new一个类对象和使用类名创建一个对象有什么区别? 用new来给一个类的对象分配空间,和使用类名称来定义一个类的对象,有什么区别?难道区别只是new的返回值是个指针,而对象定义得到的是变量名么?或者是在存储...
  • Java是面向对象的编程语言,所以新实例(objects)的创建可能是它最重要的概念之一。在新的类实例中构造器(Constructors)扮演了非常核心的角色,Java对于构造器(Constructors)的定义提供了很多方案。
  • 如何定义一个只能在堆(栈)上创建对象的类 1.只能在栈上创建对象的类 只有使用new运算符,对象才会建立在堆上,因此,只要禁用new运算符就可以实现类对象只能建立在栈上 class AA { public: AA() { cout ()...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,291,959
精华内容 916,783
关键字:

创建和定义对象