zoukankan      html  css  js  c++  java
  • python面向对象之初步认识

    面向对象
    

    类,用来描述一类事物的相同的特征或者属性。比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪叫。。。再比如汽车,四个轮子,都拥有车壳,都会跑,都有一定的承重。。。这些都是具备一些共同特征的事物。

    类的定义方式:

    class ClassName:
        '类的帮助信息'  # 类文档字符串
        class_suite  #类体,由类成员,方法,数据属性组成
    

    下面是一个简单类的定义,其中函数内的self代指类的实例

    
    
    class Cat:
        'Cat类的帮助信息'
    
        def __init__(self):  # 类的初始化方法
            print("Cat 的init方法被调用")
    
        def eat(self):  # 自定义方法
            print("cat is eating")
    
        def run(self):  # 自定义方法
            print("cat is running")

    如何使用这个类?与调用函数的方式类似,类的使用是通过类名()进行使用,返回的是一个对象,也就是实例。

    
    tom = Cat()
    print(tom)  # <__main__.Cat object at 0x000001B4A55123C8>

    类中不仅仅可以定义函数,还可以定义变量。

    class Car(object):
        'Car'
        CarCount = 0  # 类属性
    
        def __init__(self):
            self.name = '法拉利'
            Car.CarCount += 1
    
        def run(self):
            print("%s" % self.name)
    
    
    car = Car()
    car1 = Car()

    其中CarCount是类属性,只要是通过Car类实例化而来的,这些实例化对象便共享这一类属性,而__init__()函数中的name则是实例属性,属于每个实例独有的,虽然变量名相同,但是取值确是可以不同。还有一点这个例子中类的声明方式改变了,使用了python中的新式类的声明方式,即class 类名(object):pass,而之前的是使用的经典类的声明方式,关于两者区别可以看着这里新式类与经典类的区别

    class Car(object):
        'Car'
        CarCount = 0  # 类属性
    
        def __init__(self, name):
            self.name = name
            Car.CarCount += 1
    
        def run(self):
            print("%s is running" % self.name)
    
    
    car = Car('法拉利')
    print(Car.CarCount)
    car.run()
    car1 = Car('大奔')
    print(Car.CarCount)
    car1.run()

    通过Car.CarCount我们可以发现 CarCount的值改变了,而且是通过不同的实例改变的同一个变量,这更加说明类属性是属于某个类实例化的所有的对象共有的,__init__函数里面比之前又多了一个形参,其中__init__函数被称为类的构造函数,是当一个对象实例化之后自动执行的函数,其中,类的普通的成员函数一般都至少具备一个self参数,比普通的函数稍微特别一点,self是个很神奇的参数,不写不行,当调用类的成员函数时,可以通过打印self查看,我们会看到一般都会打印出<__main__.Car object at 0x000001ABF02D8CF8>这样类似的语句,可以看出self可以用来代表实例化的对象。当调用类中的方法是通过

    对象名.函数名()进行调用的。

     到这里可以书写简单的类了

  • 相关阅读:
    在 Mac OS X 上安装 TensorFlow
    用序列到序列和注意模型实现的:Translation with a Sequence to Sequence Network and Attention
    PyTorch 实战-张量
    PyTorch 实战-用 Numpy 热身
    tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例
    叩响秋雨梧桐的大门——2018中考之后
    完全背包——01背包方法数
    dp——01背包
    图论最短路——dijkstra
    图论最短路——spfa
  • 原文地址:https://www.cnblogs.com/June-King/p/10596203.html
Copyright © 2011-2022 走看看