精华内容
下载资源
问答
  • #@Author :wuailexiangclass Phone:'''这是一个手机类主要功能有,打电话,发短信,看电视,听音乐主要属性有,华为,3000,土豪金,android'''#通过初始化函数__init__把属性进行初始化def __init__(self,brand_...

    #@Author :wuailexiang

    class Phone:

    '''

    这是一个手机类

    主要功能有,打电话,发短信,看电视,听音乐

    主要属性有,华为,3000,土豪金,android

    '''

    #通过初始化函数__init__把属性进行初始化

    def __init__(self,brand_name,price,color,os):#可以给初始化参数进行默认值

    self.brand_name =brand_name

    self.price=price

    self.color= color#把参数赋值给对象,只能用对象调用

    Phone.os = os#把参数赋值给类,既可以用类调用也可以用对象调用

    #功能,定义了几个方法

    def call(self,name):

    print('我的功能是打电话,我给{}打电话'.format(name))

    @staticmethod

    def massage(*arge):

    print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))

    @classmethod

    def watchTV(cls):#类方法,在类方法中调用对象方法,需要类名().方法名(),调用静态方法直接类名.方法名()

    print('我的功能是看电视的')

    @classmethod

    def music(self,music_name='天堂'):

    print('我的功能是用来听音乐的,我听的歌曲是{}'.format(music_name))

    def calss_info(self):#对象方法

    print('我的手机是{}手机,颜色是{},是{}系统,价格是{}元'.format(self.brand_name,self.color,self.os,self.price))

    #调用类

    p=Phone('华为',3500,'土豪金','android')# 调用类需要在类的后面加一个括号

    p.call('张三')

    p.calss_info()

    4be4e0ca257f855ee309f97f88a29aa1.png

    如果静态函数和类方法没有用到参数中的值,就可以直接用类名.方法名()调用,不需要创建对象,也就不需要传参数了

    # -*- coding: UTF-8 -*-

    #@Time :2019/09/08 11:23

    #@Author :wuailexiang

    class Phone:

    '''

    这是一个手机类

    主要功能有,打电话,发短信,看电视,听音乐

    主要属性有,华为,3000,土豪金,android

    '''

    #通过初始化函数__init__把属性进行初始化

    def __init__(self,brand_name,price,color,os):#可以给初始化参数进行默认值

    self.brand_name =brand_name

    self.price=price

    self.color= color#把参数赋值给对象,只能用对象调用

    Phone.os = os#把参数赋值给类,既可以用类调用也可以用对象调用

    @staticmethod

    def massage(*arge):

    print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))

    Phone.massage('今天周末明天又要上班')

    54c564727b905170d8d4912f7ce8382e.png

    展开全文
  • 1.类的属性成员变量对象的创建创建对象的过程称之为实例,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法,句柄用于区分不同的对象对象属性和方法,与类中的成员变量和成员函数对应,obj = ...

    1.类的属性

    成员变量

    对象的创建

    创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法,

    句柄用于区分不同的对象,

    对象的属性和方法,与类中的成员变量和成员函数对应,

    obj = MyClass()创建类的一个实例,扩号对象,通过对象来调用方法和属性

    类的属性

    类的属性按使用范围分为公有属性和私有属性类的属性范围,取决于属性的名称,

    **共有属性**---在内中和内外都能够调用的属性

    **私有属性**---不能在内外贝类以外函数调用

    定义方式:以"__"双下划线开始的成员变量就是私有属性

    可以通过instance.__classname__attribute方式访问,

    内置属性--由系统在定义类的时候默认添加的由前后双下划线构成,如__dic__,__module__

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    ren = People()

    ren.color = '白色人'

    print ren.color

    ren.think()

    print '#'*30

    print("People.color")

    print ren.__People__age ##测试时使用。如要调用 时,通过方法内调用 。

    2.类的方法

    成员函数

    类的方法

    方法的定义和函数一样,但是需要self作为第一个参数.

    类方法为:

    公有方法

    私有方法

    类方法

    静态方法

    公有方法:在类中和类外都都测调用的方法.

    私有方法:不测被类的外部调用模块,在方法前加个“__”c双下划线就是私有方法。

    self参数:

    用于区分函数和类的方法(必须有一个self)

    self参数表示执行对象本身

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def test(self):

    self.think() # 内部调用

    jack = People()

    jack.test() #外部调用

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    def test(self):

    self.__talk() # 内部调用talk()

    jack = People()

    jack.test() #外部调用

    类方法

    类方法:被classmethod()函数处理过的函数,能被类所调用,也能被对象所调用(是继承的关系)。

    静态方法:相当于“全局函数”,可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义静态方法, 静态方法没有self参数

    装饰器:

    @classmethod()

    @staticmethod()

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    def test(self):

    print 'Testing....'

    cm = classmethod(test)

    jack = People()

    People.cm()

    通过类方法类内的方法 ,不涉及的属性和方法 不会被加载,节省内存,快。

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    def test(): ##没有self 静态调用 会把所有的属性加载到内存里。

    print People.__age # 通过类访问内部变量

    sm = staticmethod(test)

    jack = People()

    People.sm()

    装饰调用类的方法:

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    jack = People()

    People.test()

    People.test1()

    3.类的内置方法

    Python内部类:

    所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界。

    例子:

    汽车是一个类,汽车的底盘轮胎也可以抽象为类,将其定义到汽车内中,而形成内部类,

    更好的描述汽车类,因为底盘轮胎是汽车的一部分。

    内部类实例化方法:

    方法1:直接使用外部类调用内部类

    方法2:先对外部类进行实例化,然后再实例化内部类

    out_name = outclass_name()

    in_name = out_name.inclass_name()

    in_name.method()

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    print("I am chinese")

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    jack = People.Chinese()

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    name ="I am a Chinese."

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    jack = People.Chinese() #外部类调用内部类

    print jack.name #外部类调用内部类对象

    另一种方法,外部类调用内部类对象

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    name ="I am a Chinese."

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    ren = People() #实例化外部类

    jack = ren.Chinese() #实例化内部类

    print jack.name #打印内部类属性

    print People.Chinese.name

    print People.Chinese().name

    魔术方法:

    str(self)

    构造函数与析构函数

    构造函数:

    用于初始化类的内部状态,Python提供的构造函数是__init__():

    __init__():方法是可选的,如果不提供,python会给出一个默认的__init__方法。

    析构函数:

    用于释放对象占用的资源,python提供的析构函数是__del__():

    __del__():也是可选的,如果不提供,则python会在后台提供默认析构函数。

    构造函数__str__

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    name ="I am a Chinese."

    def __str__(self):

    return "This is People class"

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    ren = People() #实例化外部类

    print ren #默认执行__str__

    __init__(self)初始化类:

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    name ="I am a Chinese."

    def __str__(self):

    return "This is People class"

    def __init__(self,c='white'): #类实例化时自动执行

    self.color = c

    self.think()

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    jack = People('green')

    ren = People() #实例化外部类

    print ren.color #通过对象访问属性是初始化后的值

    print People.color #通过类访问还是原来的值

    [root@localhost 20180110]# python test1.py

    I am a black

    I am a thinker

    30

    black

    yellow

    析构函数__del__():释放资源

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    name ="I am a Chinese."

    def __str__(self):

    return "This is People class"

    def __init__(self,c='white'): #类实例化时自动执行

    print ("initing...")

    self.color = c

    self.think()

    f = open('test.py')

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    def __del__(self):

    print ("del....")

    self.f.close()

    jack = People('green')

    ren = People() #实例化外部类

    print ren.color #通过对象访问属性是初始化后的值

    print People.color #通过类访问还是原来的值

    垃圾回收机制:

    Python采用垃圾回收机制来清理不再使用的对象;python提供gc模块释放不再使用的对象。

    Python采用“引用计数”的算法方式来处理回收,即:当然某个对象在其作用域内不再被其

    他对象引用的时候,python就自动化清除对象。

    gc模块collect()可以一次性收集所有待处理的对象(gc.collect)

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    class People(object):

    color = 'yellow'

    __age = 30 #私有属性

    class Chinese(object):

    name ="I am a Chinese."

    def __str__(self):

    return "This is People class"

    def __init__(self,c='white'): #类实例化时自动执行

    print ("initing...")

    self.color = c

    self.think()

    f = open('test.py')

    def think(self):

    self.color = "black"

    print "I am a %s " % self.color

    print ("I am a thinker")

    print self.__age

    def __talk(self):

    print "I am talking with Tom"

    @classmethod #调用类的方法

    def test(self):

    print ("this is class method")

    @staticmethod #调用类的方法

    def test1():

    print ("this is static method")

    def __del__(self):

    print ("del....")

    self.f.close()

    print gc.collect() 如果是0是没有回收的。

    jack = People('green')

    ren = People() #实例化外部类

    print ren.color #通过对象访问属性是初始化后的值

    print People.color #通过类访问还是原来的值

    展开全文
  • 类的定义,属性和方法概念方法中self的作用和意义初始化( __init__ ) 和 析构方法( __del__ )类的定义class 类名实例实例名 = 类名()一个“实例”的“特征”,就是“属性”私有属性python中有两种私有属性,分别是...

    类的定义,属性和方法概念

    方法中self的作用和意义

    初始化( __init__ ) 和 析构方法( __del__ )

    类的定义

    class 类名

    1d5870a7f89a3892a467b09988afd60e.png

    实例

    实例名 = 类名()

    一个“实例”的“特征”,就是“属性”

    79168babb72116c58afbdb8a552c89af.png

    私有属性

    在python中有两种私有属性,分别是在属性前加  一个下换线(_) 和 两个下划线(__)

    一个下滑线外部可以直接访问(用运算符“.”,点不出来,在知道有的情况下,可以直接使用)

    两个下划线外部不可以直接访问(实例名._类名__私有属性、这样调用、用dir(实例名)可以查看所有属性和方法)

    710ce06852e74696ac2bf8bc3a1b02f2.png

    8992ad31fb1f0562e54394aba66c5982.png

    类是一个独立存放变量(属性/方法)的空间

    实例也是一个独立存放变量的空间,不同实例之间的空间互相不可见

    运算符“.”调用类的属性或方法

    “类”与“实例”之间的关系

    类是一类事物的抽象,不是真实存在的,描绘了该类事物的共性

    实例是某类事物的具体个体,是该类事物的具体表现,它是真实存在的

    方法

    “方法”就是封装在类里的一种特殊的函数

    通常,将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身

    方法总是定义在类中的,但是却叫“实例方法”,因为它表示该类所有实例所共有的行为

    bf600a89c8431d6a1896b0b006289fad.png

    90b78227903f68f8f8c83e70c4680c97.png

    初始化(__init__)

    在Python中有很多以双下划线开头且以双下划线结尾的固定方法,他们会在特定的时机被触发执行

    __init__ 就是其中之一,它会在实例化之后自动被调用,以完成实例的初始化

    acc6e485f3113d9231834f09944f6544.png

    4a1dc08fd7291ade42cbebef66f54c07.png

    __init__ 的参数传递过程

    实例化时,产生一个类的实例  -->  Python自动调用 实例.__init__(参数)  -->  转换为 类.__init__(实例,参数)

    d4c9b84c902386aa345ef980f358cac7.png

    析构(__del__)

    "__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数

    当没有一个变量指向某个对象的时候,Python会自动销毁这个对象,以便回收内存空间

    6d327744c2d41cfa9e4049cbd2226b20.png

    ff7720bff440a8db29994641114485db.png

    edbc48d9f9d4c033564b3976685cf470.png

    del 关键字,可以删除一个变量的指向

    1d1f0cec8c55b4639d1261162260c3e1.png

    4167fe65d0ffbde7179165971c8523d5.png

    python 类定义 继承

    0 前言 系统:win7 64bit IDE : python(x,y) 2.7.6.1 IDE集成的解释器:Python 2.7.6 (default, Nov 10 2013, 19:24:18) ...

    python类:属性

    http://blog.csdn.net/pipisorry/article/details/50708616 Python 中的 property 属性 Python中有个很赞的概念,叫做prope ...

    python类定义

    在我的收藏中有一篇特别详细的类讲解 此处部分内容引自:http://blog.sina.com.cn/s/blog_59b6af690101bfem.html class myclass: 'this ...

    Python类定义和类继承详解

    类实例化后,可以使用其属性,实际上,创建一个实例之后,可以通过类名访问其属性,如果直接使用类名修改其属性,那么直接影响已经实例化的对象. 类的私有属性: __private_attrs 两个下划线开头 ...

    python类定义的讲解

    python是怎么定义类的,看了下面的文章大家就会了,不用多说,开始学习. 一.类定义: 复制代码代码如下: class : 类实例化后,可以使用其属性,实际 ...

    python类定义与c#的一些区别

    c#中可以定义一个空类,但是python中定义空类需要加pass class EmptyClass(object): pass python的lei是多继承   python子类继承了基类,如果子类也 ...

    Python 类的属性再解

    #类的属性 class A(): #定义一个类的属性,类似于c++中的静态变量 num=0 def __init__(self): #实例对象属性定义赋值 self.name = "hha& ...

    Python 类的属性和实例属性 Python 的动态语言

    #定义一下类, 含有类属性 aaa, >>> class Aa: ... aaa = 10... #对类 Aa实例化出一个实例 a1>>> a1 = Aa() &g ...

    Java在的时候,类定义HashSet初始化方法

    Java非常多的时间,应使用HashSet搜索功能,类的则定义,是HashSet类型的,我们定义数据成员之后,不好直接调用add函数来实现初始化,这个时候怎么办? 我们能够这样来做: public s ...

    随机推荐

    C#设计模式——单件模式

    一.为何需要单件模式 需求 我们开发了一个大型的项目,其中存在许多的工具类.但是其中很多的工具类我们并不是经常使用得到,甚至 一次都不会使用.但是这些工具类都是静态的类,会消耗很多的内存,即使一次都不 ...

    Codeigniter CRUD代码快速构建

    一个与数据库操作打交道的应用,必然涉及到数据的添加.修改.删除等操作.因此CRUD操作几乎成为每个后台管理站点的必备功能.数据库的复杂性,导致PHP操作代码也会有不少的冗余,因此,如果可以有工具自动生 ...

    NFC(6)NFC编程的几个重要类,NFC硬件启动android应用原理

    用于NFC编程的几个重要类 Tag NFC 标签 NfcAdapter Nfc 的适配类 NdefMessage 描述NDEF格式的信息 NdefRecord 描述NDEF信息的一个信息段,类似tab ...

    Mustache

    简要介绍 玩过node的人应该都知道ejs,jade. mustache和他们一样都是模板渲染引擎,我个人喜欢mustache,因为他非常简洁,代码量才600多行. mustache既可以在前端使用, ...

    C#后台创建控件并获取值

    前台代码

    展开全文
  • 面向对象 (Object Oriented Programming,简称OOP)1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序。它的核心是对象,此时程序员从操作者变成了指挥者。2.为什么使用面向对象编程:...

    面向对象 (Object Oriented Programming,简称OOP)

    1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序。它的核心是对象,此时程序员从操作者变成了指挥者。

    2.为什么使用面向对象编程:当今时代背景下,通常应用程序对扩展性和维护性要求都是非常高的,为什么?想想qq,微信,是不是不断的在添加新功能?,也就是说一款应用程序诞生后,都需要不断的更新维护。

    3.面向对象优缺点:

    优点:拓展性  灵活性 重用性

    缺点: 程序的复杂度提高了   无法准确的预知程序的执行结果

    4.应用场景:对拓展性要求高的程序,一般是直接面向用户的如:qq 微信

    面向过程

    1.什么是面向过程:也是一种编程思维,他的核心是过程就是一步步的执行步骤(先干什么,在干什么),面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。

    2.面向过程的优缺点:

    优点:逻辑清晰  复杂问题简单化,流程化

    缺点:拓展性差  可维护性差

    3.应用场景:对拓展性要求低的程序如:系统内核

    注意:程序是选择面向对象还是面向程序,主要是根据具体需求来选择

    类和对象初识

    1.类:是一种抽象的概念,是具备相同特征和相同行为对象的集合体。如人类,鱼类等。

    2.对象:是具体存在的事物,具备自己的特征和行为。对象就是特征和技能的结合体。

    注意:现实生活中先有对象后有类        程序中是先有类后有对象。

    在使用面向对象编程时,第一步就是思考需要什么样的对象,对象具备什么样的特征和行为,从而根据 这些信息总结出需要的类型

    python中的类和对象

    1.定义类的语法:

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    class类的名称:#类中的内容 描述属性和技能

    #描述属性用变量

    #描述行为用函数

    #类名称 书写规范 首先是见名知意 名称是大驼峰命名法#驼峰就是单词首字母大写 , 大驼峰是第一个字母大写,小驼峰是第一个字母小写

    View Code

    2.创建对象语法

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    classPerson:pass

    #创建对象

    p = Person()

    View Code

    3.类中和对象中属性的区别

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    属性可以写在类中

    类中的属性,是所有对象公共的

    也可以写在对象中

    对象中的属性,是每个对象独特的(不一样的)

    如果类中和对象中存在同样的属性,先访问对象 如果没有在访问类

    练习: 描述一个老师类 需要包含 一个公共属性和 一个独特的属性classTeacher:

    school= "oldboy"t1=Teacher()

    t1.name= "jack"t1.age= 28

    View Code

    4.对象属性的 增 删 改 查

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1.增加属性

    对象变量名称.属性名称=属性值2.删除属性del对象的变量名称.属性名称3.修改

    对象.属性=新的值4.查看属性 访问的是对象的所有属性(只能访问到实行的名称空间和类无关)#print(对象.__dict__)

    classTeacher:

    school= "oldboy"t1=Teacher()

    t1.name= "jack"t1.age= 28

    print(t1.__dict__) #{'name': 'jack', 'age': 28}

    访问对象的类信息#print(对象.__class__)

    print(t1.__class__) #

    View Code

    python中的初始化__init__

    1.什么是初始化方法:用于为对象的属性设置初始值的函数

    2.__init__ 事例和特点

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    classDog:def __init__(self,kind,color,age):

    self.kind=kind

    self.color=color

    self.age=ageprint(d1.kind) #二哈

    print(d2.kind) #泰迪

    #注意:1.当实例化 对象时,会自动执行init方法(注意与元类中__init__区分开来)

    2.会自动将对象作为第一个参数传入,参数名称位self ,self可以是别的名字,但不建议改3.该函数不能有任何返回值/.... 只能是None 规定如此..4.有了`__init__`方法,在创建实例的时候,就不能传入空的参数了,必须传入与 `__init__`方法匹配的参数,但`self`不需要传,Python解释器自己会把实例变量传进去:

    View Code

    类和对象的属性查找顺序

    属性查找顺序:对象->类->父类

    绑定与非绑定

    对象的精髓就是将数据和处理数据的函数整合到一起 ,这样一来拿到一个对象就同时拿到了需要处理的数据以及处理数据的函数

    1.对象绑定(将对象与方法进行绑定)

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    #练习:写一个学生类,具备一个打招呼的技能 要能输出自己的名字信息

    classStudent:def __init__(self,name):

    self.name=namedefsay_hi(self):print("hello my name is %s" %self.name)

    s1= Student('jack')#对象调用

    s1.say_hi() #hello my name is jack#类调用

    Student.say_hi(s1) #hello my name is jack

    #默认情况下类中的方法都是对象绑定方法

    #其特殊之处在于,

    当使用对象调用该函数时会自动传入对象本身,作为第一个参数

    当使用类名来调用时他就是一个普通函数,有几个参数就得传几个参数

    View Code

    2.类绑定(将类与方法进行绑定)

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    classOldBoyStudent:

    school= "oldboy"

    def __init__(self,name):

    self.name=name

    @classmethoddefshow_school(cls):print(cls.school)print(cls)

    @staticmethoddefprint_hello():print("hello world")#类调用

    OldBoyStudent.show_school() #oldboy

    #对象调用

    stu = OldBoyStudent("jack")

    stu.show_school()## oldboy

    类绑定方法用@classmethod来装饰

    特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数

    什么时候绑定给对象:当函数逻辑需要访问对象中的数据时

    什么时候绑定给类:当函数逻辑需要访问类中的数据时

    View Code

    3.静态绑定(非绑定)

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    classOldBoyStudent:

    school= "oldboy"

    def __init__(self,name):

    self.name=name

    @staticmethoddefprint_hello():print("hello world")#对象调用

    tu = OldBoyStudent("jack")

    stu.print_hello(18) #年龄 18

    #类调用

    OldBoyStudent.print_hello(18) #年龄 18

    也叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据

    语法:@staticmethod

    不常用:无论是类调用还是对象调用有几个参数就传几个参数

    View Code

    4.练习

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    """需求设计王者荣耀中的英雄类,每个英雄对象可以对其他英雄对象使用技能

    具备以下属性

    英雄名称,等级,血量

    和Q_hurt,W_hurt,E_hurt 三个属性,表示各技能的伤害量

    具备以下技能

    Q W E

    三个技能都需要一个敌方英雄作为参数,当敌方血量小于等于0时角色死亡

    涉及到英雄对象

    属性:

    名字 等级 血量

    行为:

    Q W E

    需要一个英雄类"""

    classHero:def __init__(self,name,level,HP,Q_hurt,W_hurt,E_hurt):

    self.name=name

    self.level=level

    self.HP=HP

    self.Q_hurt=Q_hurt

    self.W_hurt=W_hurt

    self.E_hurt=E_hurtdefQ(self,enemy):print("%s 对 %s 释放了 Q技能 造成了%s伤害" %(self.name,enemy.name,self.Q_hurt))

    self.attack(enemy, self.Q_hurt)defW(self,enemy):print("%s 对 %s 释放了 W技能 造成了%s伤害" %(self.name, enemy.name, self.W_hurt))

    self.attack(enemy, self.W_hurt)defE(self,enemy):print("%s 对 %s 释放了 E技能 造成了%s伤害" %(self.name, enemy.name, self.E_hurt))

    self.attack(enemy,self.E_hurt)defattack(self,enemy,hurt):

    enemy.HP-=hurtif enemy.HP <=0:print("%s 已被%s击杀" %(enemy.name, self.name))#创建两个英雄对象

    arso = Hero("亚瑟","15",1000,30,500,200)

    dj= Hero("妲己","15",800,300,10,800)#

    #dj.W(arso)#dj.Q(arso)#dj.E(arso)

    arso.Q(dj)

    arso.W(dj)

    arso.E(dj)

    dj.W(arso)

    dj.Q(arso)

    dj.E(arso)

    View Code

    5.补充:

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    __doc__:注释

    对象.__class__:访问对象类信息

    类名.__name__:查看类名

    View Code

    展开全文
  • python初始化方法

    2021-08-30 12:00:45
    每个类中都存在一个初始化方法,这个方法不需要调用,在通过类创建实例对象的时候初始化方法会自动执行。 定义初始化方法:def init(self): ,init两边是双下划线。 初始化方法中,除了可以设置固定值之外,还可以...
  • Python 初始化方法

    2021-12-10 22:23:21
    5、初始化方法 5.1 之前代码存在的问题 ---- 在类的外部给对象增加属性 将案例代码进行调整,先调用方法 再设置属性,观察一下执行效果。...2)、为对象属性 设置初始值 ---- 初始化方法(init); 这个 初始化方法 就
  • python 初始化父类方法

    2021-09-17 20:25:16
    初始化父类的传统方法,是在子类里用字类实例直接调用父类的 __init__ 方法 缺点:对于多继承情况,需要注意调用超类 __init__ 方法的先后顺序 class MyChildClass(MyBaseClass): def __init__(self): ...
  • python参数初始化

    2021-03-18 08:26:01
    python 初始化参数怎么设置class A(object): def __init__(arg): self.arg = arg 在__init__中定义python中类的初始化函数形参=0含义看来你是学c#不久的 private和public作为访问权限来 控制变量的作用域是很有必要...
  • (Java中也没有全局范围) 我将提到,在Python中,使用一个变量而不知道它是否已被初始化/定义是完全正常的。嗯,也许不正常,但至少在适当的情况下是可以接受的。在Python中,试图使用未定义的变量会引发^ {< CD5> ...
  • 1、延迟初始化也可以叫它惰性求值,即,在不使用这个属性之前,不去计算它,直到需要,同时,下一次使用时不必重新计算,这样做是为了提高性能,减少对内存的消耗2、示例代码我这里直接给一份网上找到的代码,后面,...
  • 当我们在设计一个类的时候,python中有一个用于初始化的方法$__init__$,类似于java中的构造器,这个就是特殊方法,也叫作魔术方法。简单来说,特殊方法可以给你设计的类加上一些神奇的特性,比如可以进行python原生...
  • Python初始化不工作

    2021-01-14 03:39:05
    这是我在sqlalchemy中使用的一些非常简单的代码,我在这里遗漏了一些关于类如何工作的基本信息。class Game(Base):__tablename__ = "games"id = Column(Integer, primary_key=True)a_name = Column(String)def __...
  • Python类继承初始化

    2020-12-24 10:11:30
    所以脚变成了def feet(self): return self 米英尺变成def feet(self): return Feet(self.value * 2.54 * 10) 概括地说,有什么原因使我能够在初始化过程中传入2个类中的1个,但它不接受该类的初始化参数吗?...
  • Python中的类初始化

    2021-02-04 08:56:21
    我发现有些类包含一个__init__函数,有些则没有。我对以下描述的内容感到困惑。这两段代码有什么区别:classTest1(object):i=1...但是,当我们不__init__为类定义函数时,在幕后是否存在Python的某种“默认”或“隐...
  • #定义init魔法方法设置初始化属性,并访问调用 #定义类 class Cat(): def init(self): #添加实例属性 self.color = ‘黑色’ self.ear = 2 def print_info(self): print(f’猫的颜色是{self.color}’) print(f’猫的...
  • 如果非要比,拿python模块和类的对象比,那么还差不多,这两者相同点非常多。(问猪和狗有什么区别这还差不多。猪和嘴巴这个属性有什么区别,猪和吃东西这个动作有什么区别,那就是不成立的问题了) 5、写在类名...
  • 一、面向对象编程我们最开始写代码是面向过程编程的,即:一步步按顺序去实现后来我们学习了函数,把这些功能封装到函数里面,需要实现某个功能的时候直接调用就行,这样可以减少代码的重复性,这就是函数式编程现在...
  • 面向过程:将程序进行流程,即把程序的步骤整理清楚再一步步实现,但是拓展性差,程序的流程在写程序的时候已经决定好,后期更改程序会牵扯到有关联性的一些功能,理解:面向过程关注的是解决问题需要哪些步骤 ...
  • Python 是一种高级的,动态的,多泛型的编程语言。Python代码很多时候看起来就像是...它有以下几个属性:ndarray.ndim:数组的维数ndarray.shape:数组每一维的大小ndarray.size:数组中全部元素的数量ndarray.dtyp...
  • Python面向对象基础入门之设置对象属性来源:中文源码网浏览: 次日期:2019年11月5日【下载文档:Python面向对象基础入门之设置对象属性.txt】(友情提示:右键点上行txt文档名->目标另存为)Python面向对象基础入门...
  • 1 python中对于一个对象我们通常会使用初始化这个方法。对象一般是是由类创造的具体存在。所以初始化一般指的是一个具体的东西而不是我们定义的类本身。 那什么叫初始化了? 初始化一般是将不确定的变为确定的,把...
  • python代码学习——类与对象类定义、语法方法对象方法静态方法类方法不同方法的区别实际应用方法/函数的编写方法/函数的相互调用对象方法调用其他方法静态方法调用其他方法类方法调用其他方法初始化函数 类 定义、...
  • 对象具有属性-优先级(1-10)现在,有很多测试需要“知道”对象的优先级(以便测试各种逻辑路径)所以我可以有10种不同的灯具:@pytest.fixturedef object_priority_1():return MyObj(priority=1)@pytest.fixturedef ...
  • 直接看代码: class Person: def __init__(self): self.name = "jack" class Student(Person): def __init__(self): self... [python之子类继承父类时进行初始化的一些问题]http://www.zyiz.net/tech/detail-98298.html
  • 文章目录9. 面向对象:类、对象属性、方法9.1 类 9. 面向对象:类、对象属性、方法 9.1 类
  • T =T #把类当对象,赋值 拷贝等操作 t = alias_T() class new class init 观察上面的输出, 因为类这个对象已经通过元类来创建出来了, 接下类就是 调用类这个对象的__new__,创建类实例,然后再通过__init__初始化类实例...
  • 进一步的,在有些场景下,我们希望能够对某个list属性进行初始化。如果需要进行这步操作,那一定要注意了。譬如,如果有一个类的Article,其定义为:class Article:def __init__(self,subject='',paragraph_list=[])...
  • 前言相信很多刚刚初学 python 的朋友几乎都会被类、对象、方法、函数和属性等概念搞得云里雾里,如果没有人点播,其实理解这些概念还是会有些困难的,下面笔者把自己对这几个概念的理解分享给大家,希望对初学者有所...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,356
精华内容 44,142
关键字:

python初始化对象属性

python 订阅