精华内容
下载资源
问答
  • Python中面向对象编程

    2017-09-15 21:14:32
    面向对象编程 虽然Python是解释性语言,但它是面向对象的,能够进行对象编程 类 继承,多继承 类所有的双下划线(__)开头的方法都是内置的,来自于父类 受保护内容都以下双滑线开头 定义一个类: class ...
    面向对象编程
    虽然Python是解释性语言,但它是面向对象的,能够进行对象编程
    继承,多继承
    类中所有的双下划线(__)开头的方法都是内置的,来自于父类
    受保护内容都以下双滑线开头
    定义一个类:
    class className:
    注意:类名后面有冒号,在类里面可以定义方法或者属性了。当一个类定义完之后,就产生一个对象。
    类对象支持俩种操作,引用和实例化。引用操作是通过类对象去调用类中属性或者方法,而
    实例化是产生一个类对象的实例,称作实例对象。 

    属性
    定义一个属性:
    class className:
    name = "zs"
    age = 18
    cn = className()
    print(cn.name,cn.age)
            在定义了类之后,就可以产生实例化对象了,这句cn = className()实例化了一个对象cn,然
    后就可以通过cn来读取属性了。name,age都是公有的,可以在类外通过对象访问,如果想定义成
    私有的,则需要在前面加双下划线(__),例如:
    class className:
    __name = "zs"
    __age = 18
    cn = className()
    print(cn.__name,cn.__age)
    方法
    类方法:
    在类中可以根据需要定义一些方法,定义方法采用def关键字,在类中定义的方法至少会有一个
    参数,一般以名为self的变量作为该参数,当然用其他也可以。是类对象所拥有的方法,需要
    用修饰器@classmethod来标识此方法,对于类方法,第一个参数必须是类对象,例如:
    class className:
    country = "china"
    #实例方法
    def getCountry(self):
    return self.country
    cn = className()
    print(cn.getCountry())
    构造方法:
    __init__(self,...)在生成对象时调用,可以用来一些初始化操作,不需要显示去调用,系统会默
    认去执行。构造方法支持重载,如果您没有自己重新定义构造方法,系统就会执行默认构造方
    法。
    析构方法:
    __del__(self)在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显
    示调用。
    静态方法:
    需要通过修饰器@staticmethod来进行修饰,静态方法不需要多定义参数,例如:
    class className:
    country = "china"
           @staticmethod
    #静态方法
    def getCountry():
    return className.country
    print(className.country())

    cn = className()
    展开全文
  • class Student: def __init__(self): pass def __func(self): # 定义一个私有方法 print("这是私有方法") def func(self): # 定义一个公有方法 print("现在为公有方法,接下来调用私有方法") ...
  • 主要介绍了深入讲解Python中面向对象编程的相关知识,是Python入门学习中的基础知识,需要的朋友可以参考下
  • 面向对象之前,可以先看看面向过程编程Python一般的用法都是面向过程编程,但是对于复杂需求,使用面向过程容易使程序过于复杂,不利于开发。 面向过程: 完成某一个需求的步骤从头到尾逐步实现 将某些...

    没有对象的new一个对象。------JAVA

     

    说面向对象之前,可以先看看面向过程编程,Python一般的用法都是面向过程编程,但是对于复杂需求,使用面向过程容易使程序过于复杂,不利于开发。

    面向过程:

    1. 完成某一个需求的步骤从头到尾逐步实现

    2. 将某些功能独立的代码封装成一个个函数

    3. 最终的代码就是顺序的调用不同的函数

    总的来说,面向过程注重步骤和过程,对于复杂的项目没有固定的套路,增加了开发的难度。

    面向对象:

    1. 完成某一个需求前首先确定职责----要做的事情(方法)
    2. 根据职责确定不同的对象,在对象内部封装不同的方法(多个)
    3. 最终的代码就是顺序的让不同的对象调用不同的方法

    总的来说,面向对象注重对象和职责,不同的对象需要承担不同的职责,对于复杂项目有固定的套路。

    一. 类和对象

    类和对象使面向对象编程的两个核心概念。

    相当于制造飞机时的图纸,负责创建对象

    对象是由创建出来的具体存在,可以直接使用,相当于用图纸制造的飞机。由哪一类创建出来的对象,就拥有这一类中定义的属性和方法

    程序开发中,应该先有类,再有对象,类只有一个,但是对象可以有很多个。

    类的设计:

    开发中应该先分析需求,确定程序包含哪些类,如植物大战僵尸,向日葵类、豌豆射手类。

    设计一个类,需要满足三大要素

    类名:这类事物的名字,满足大驼峰命名法(每一个单词首字母大写,没有下划线:HouseSell)

    属性:这类事物具有什么样的特征

    方法:这类事物具有什么样的行为

    开发时先分析需求,通过提炼对象的名词,能找到类名,对象的特征就是类的属性,对象的行为(动词)就是类的方法。

    举例:

    小明今年18岁,身高1.75,每天早上跑完步,回家吃早饭

    小美今年17岁,身高1.65,喜欢吃东西

    那么分析一下,小明和小美就是两个对象,抽象出来他们都属于人类,所以类名可以定义为Person,根据三大要素来看,还需要找到类的属性,那么名字、年龄和身高就是一个人的特征,即为类的属性,最后跑和吃(动词)就是类的方法

    类名 Person
    类的属性 name,age,height
    类的方法 run(),eat()

    二. 面向对象基础语法

     dir()内置函数可以查看一个对象的所有属性和方法,格式为“__方法名__"的方法是python提供的内置方法/属性。

    (1)类的定义

    # 定义一个只包含方法的类
    class 类名:
        
        def 方法1(self, 参数列表):  # 方法定义和函数相同,区别在于第一个参数必须是self
            pass
    
        def 方法2(self, 参数列表):
            pass
    
    
    # 创建对象
    
    对象变量 = 类名() 

    举例:

    小猫爱吃鱼,小猫要喝水

    类名:猫    类的方法:吃、喝

    class Cat:
        
        def eat(self):
            print("小猫吃鱼")
    
        def drink(self):
            print("小猫喝水")
    
    Tom = Cat()  # 创建一个叫Tom的对象 猫类
    Tom.eat()
    Tom.drink()

    (2)方法中的self

    在类封装的方法内部,self表示当前调用方法的对象自己,方法内部可以通过self.访问对象的属性,也可以通过self.调用其他对象的方法。

    总的来说,由哪一个对象调用的方法,方法内的self就是对哪一个对象的引用(所谓引用就是指向的地址)。

    class Cat:
        
        def eat(self):
            print("%s 爱吃鱼" % self.name)
    
    tom = Cat()
    tom.name = "Tom"  # 给对象添加属性 但是不推荐这样给对象增加属性
    tom.eat()

    类的外部,通过变量名.访问对象的属性和方法。

    类的内部,通过self.访问对象的属性和方法。  

    (3)初始化方法

    __init__是专门用来定义一个类具有哪些属性的方法。

    使用类名()来创建对象的时候会自动调用初始化方法。

    在__init__方法内部使用self.属性名 = 属性初始值 就可以定义属性,定义属性之后再创建的对象都会具有该属性。

    class Cat:
        
        def __init__(self, name):
            self.name = name
        
    
        def eat(self):
            print("%s 爱吃鱼" % self.name)
    
    tom = Cat("Tom")  # 创建对象给定初值
    
    print(tom.name)

    (4)私有属性和私有方法

    在实际场景中,对象的某些属性或方法可能只希望在对象内部被使用,不希望外部被访问,则可以将方法、属性私有化。

    在定义属性或者方法时,在名字前加两个下划线,就是私有属性或方法。

     

    但是但是但是。。。Python中只是伪私有,使用__name来隐藏属性实际上只是将名字改成了_类名__名字的形式,如果使用_类名__名字还是能够访问到类内部的私有属性和私有方法。

    展开全文
  • [<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
  • class Student(): __slots__ = ('name', 'age')
  • _str_函数可以将类变成一个字符串。。。。。。。。。 上程序看吧,清晰明了 这是没有加 str 函数的结果>>> class Fruit(object): def __init__(self, size, color): self.size = size ...>>> p

    _str_函数可以将类变成一个字符串。。。。。。。。。
    上程序看吧,清晰明了
    这是没有加 str 函数的结果

    >>> class Fruit(object):
            def __init__(self, size, color):
            self.size = size
            self.color = color
    
    
    >>> p=Fruit(20,'red')
    >>> print p
    <__main__.Fruit object at 0x028D1AB0>
    >>> p
    <__main__.Fruit object at 0x028D1AB0>
    >>> 

    加上 str 函数的

    >>> class Fruit(object):
            def __init__(self, size, color):
            self.size = size
            self.color = color
        def __str__(self):
            return'(Fruit: %d,%s)' % (self.size,self.color)
    
    
    >>> p = Person('Bob', 'male')
    >>> print p
    (Person: Bob, male)
    >>> p
    (Person: Bob, male)
    >>> 
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,163
精华内容 2,865
关键字:

python中面向对象编程

python 订阅