Python中的类的定义和对象的创建方法

目录
  • 1.创建类和创建类对象
  • 2.新式类与旧式(经典)类

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

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

到此这篇关于Python中的类的定义和对象的创建的文章就介绍到这了,更多相关python定义类和创建对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python定义变量类型

    目录 定义变量 什么是变量? 变量的定义? 标识符(命令规范) 命名原则 变量的类型 不同类型变量之间的计算 变量的输入 变量的格式化输出 变量赋值 删除变量 常量定义 定义变量 什么是变量? 在程序运行过程中,其值可以改变的量 变量的定义? 在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建 等号(=)用来给变量赋值 =左边是一个变量名 =右边是存储在变量中的值 变量名 = 值 变量定义之后,后续就可以直接使用了 标识符(命令规范) 只能由数字.字母.下划线组成 不

  • python基础之定义类和对象详解

    定义简单的类 面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了! 定义只包含方法的类 在python中,要定义一个只包含方法的类,语法格式如下: #用class定义类名 class 类名: def 方法1(self,参数列表) #方法的属性中有且仅有一个self pass def 方法2(self,参数列表) #类之外定义的def是函数,在类里面定义的def叫做方法,而且括号里必须要有self pass class Student: pass

  • Python类的定义和使用详情

    目录 1.基础概念 2.定义一个Person类 3.类定义 4.类方法定义 5.类的继承 6.类的公有,私有 7.子类调用父类的方法 1.基础概念 在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念:对象才是一个具体存在的实体.从这个意义上看,日常所说的人,其实都是人的对象,而不是人类. Python 定义类的简单语法如下: class 类名:    执行语句...    零个到多个类

  • python中的3种定义类方法

    目录 1.普通方法 2.类方法 3.静态方法 4.总结 python中的3种定义类方法: 普通方法 类方法(@classmethod) 类方法(@classmethod) 1.普通方法 创建普通的方法的方式有两种(class A() & class B()). class A(): def __init__(self, name, age): self.name = name self.age = age def get_name(self): print('my name is', self.

  • Python利用Beautiful Soup模块创建对象详解

    安装 通过 pip 安装 Beautiful Soup 模块:pip install beautifulsoup4 . 还可以使用 PyCharm IDE 来写代码,在 PyCharm 中的 Preferences 中找到 Project ,在里面搜索 Beautiful Soup 模块,进行安装即可. 创建 BeautifulSoup 对象 Beautiful Soup 模块广泛使用从网页中得到数据.我们能够使用 Beautiful Soup 模块从 HTML/XML 文档中提取任何数据,例如

  • Python中的类的定义和对象的创建方法

    目录 1.创建类和创建类对象 2.新式类与旧式(经典)类 面向对象中两个重要的概念: 1.类   :对一类事物的描述,是抽象的.概念上的定义.比如做石膏像的模型2.对象:实际存在的该类事物的每个个体,因而也称实例(instance).比如石膏像二者的关系:对象是由类派生的.创建的.一个类可以创建无穷多个对象,每个对象都属于类. 1.创建类和创建类对象 1.创建类,类主要由类名,属性,方法组成,当然创建一个类时,属性和方法可以选择的. class Person: def cry(self): #类

  • C++类的定义和对象的创建详解

    目录 1.类的定义 2.创建对象 3.访问类的成员 4.使用对象指针 前言: 类和对象是 C++ 的重要特性,它们使得 C++ 成为面向对象的编程语言,可以用来开发中大型项目,本节重点讲解类和对象的语法,如果你对它们的概念还不了解,请先阅读<C++类和对象到底是什么>. 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化.每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数. 有些教程将类的成员变量称为类的属性(Pro

  • 在Python中通过threading模块定义和调用线程的方法

    定义线程 最简单的方法:使用target指定线程要执行的目标函数,再使用start()启动. 语法: class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}) group恒为None,保留未来使用.target为要执行的函数名.name为线程名,默认为Thread-N,通常使用默认即可.但服务器端程序线程功能不同时,建议命名. #!/usr/bin/env python3 # coding=utf

  • 全面了解python中的类,对象,方法,属性

    python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征.它会汪汪叫,会摇尾巴等是它的行为. 我们在描述一个真实对象(物体)时包括两个方面: 它可以做什么(行为) 它是什么样的(属性或特征). 在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象

  • python中元类用法实例

    本文实例讲述了python中元类用法,分享给大家供大家参考.具体方法分析如下: 1.元类(metaclass)是用来创建类的类 2.type(object):返回一个对象的类型,与object.__class__的值相同,type(name,bases,dict):创建一个新的type类型,name就是新class的name,值存到__name__属性中,bases是tuple类型,值会存到__bases__中,dict的值存到__dict__中 复制代码 代码如下: class X: ... 

  • Python中私有属性的定义方式

    Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field. 示例代码: class Vector2D(object): def __init__(self, x, y): self.__x = float(x) self.__y = float(y) self.xx = x self.yy = y def get_x(self): return self.__x # 内部访问 if __name__ == "__ma

  • Python抽象基类的定义与使用方法

    目录 1.定义抽象基类的子类 2.标准库中的抽象基类 3.定义抽象基类 4.再看白鹅类型 前言: 我们写Python基本不需要自己创建抽象基类,而是通过鸭子类型来解决大部分问题.<流畅的Python>作者使用了15年Python,但只在项目中创建过一个抽象基类.我们更多时候是创建现有抽象基类的子类,或者使用现有的抽象基类注册.本文的意义在于,了解抽象基类的定义与使用,可以帮助我们理解抽象基类是如何实现的,为我们以后学习后端语言(比如Java.Golang)打下基础.毕竟抽象基类是编程语言通用设

  • python中class类与方法的用法实例详解

    目录 类和方法的概念和实例 1.python类:class 2.类的构造方法__init__() 3.类中方法的参数self 4.继承 5.方法重写 类的特殊属性与方法 类的私有属性 总结 因为一直不太清楚面向对象的类和方法的编程思想,所以特地补了一下python-class的知识,在这里记录和分享一下. 类和方法的概念和实例 类(Class):用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类的构造方法__init

  • Python中函数的参数定义和可变参数用法实例分析

    本文实例讲述了Python中函数的参数定义和可变参数用法.分享给大家供大家参考.具体如下: 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函数定义,我们都知道,下面的代码定义了一个函数funcA def funcA(): pass 显然,函数funcA没有参数(同时啥也不干:D). 下面这个函数funcB就有两个参数了, def funcB(a,

随机推荐