Python笔记_第三篇_面向对象_2.第一个Python类

1. 设计一个类

  设计一个类主要从三个方面进行考虑:

  第一:类名:类名要见名知意。首字母大写。

  第二:属性。

  第三:方法。

备注:在Python中有些东西并不是绝对化的事情,有些根据Python社区里面有些约定俗称的规定,在Python这种动态语言当中随处可见,比如像__、_单双下划线的使用就是这个问题的一个体现。

 

2. 创建一个类

  类:一种数据类型,本身并不占内存空间,根据所学过的number、string、boolean等类似,用类创建实例化对象。

  格式:

    class 类名(父类列表):

    属性

    方法

备注:Object:是一个基类,也可以叫做超类,所有类的父亲,后面说道继承的时候回详细说明,所有的类最终都会继承自object,一般没有合适的父类就写Object,或者不写也可以。

class Person(object):
    # 定义属性(定义变量)
    name = ""
    age = 0
    height = 0
    weight = 0

    # 定义方法(定义函数)
    # 注意:方法的参数必须以self当第一个参数,self代表类的实例(某个对象)
    def run(self):
        print("run")
    def eat(self,food):
        print("eat " + food)
    def openDoor(self):
        print("我已经打开了冰箱门")
    def fillEle(self):
        print("我已经把大象装进冰箱了")
    def closeDoor(self):
        print("我已经关闭了冰箱门")

 

3. 使用一个类

  使用一个类的过程也叫实例化一个类。

  格式:对象名 = 类名(参数列表) ---- 如果没有参数列表括号也不能省略

  注意:没有参数,小括号也不能省略(在C#这种面相对象的语言中要用new 类名的方法去实例化一个类,在Python这种语言中不需要,另外,其他面相对象语言有静态类和动态类这么一说,Python应该都是动态类,因为静态类不需要实例化)

  举例说明:

# 实例一个对象
per1 = Person()
print(per1)
# 返回值:<__main__.Person object at 0x000002A85E0A1080>
# __mian__表示入口
# at 0x000002A85E0A1080 表示内存地址

per2 = Person()
print(per2)
# 返回值:<__main__.Person object at 0x0000025F9B1611D0>
# 我们发现内存地址不一样,他们两个对象是没有关系的。

  注意:我们发现两个内存地址是不一样的。另外,__main__表示这个类的入口是对应main下的.Person这个类。因为在Python语言中不像类似于C#这样,需要些一个mian函数作为整个代码的入口。但是这些内容通过下划线的方式标识出来,隐含在类当中。通过实例化我们发现,两个内存地址是不一样的。也就是任何使用者都可以去实例化这个类,拿给自己用。

 

4. 访问类的属性:

  格式:

    对象名.属性名

  赋值:

    对象名.属性名 = 值

  举例说明:

# 实例化一个类        
per = Person()  # C# 语言Person per = new Person()这种实例化方法,Python省去很多了
per.name = "Thomas"
per.age = 18
per.height = 160
per.weight = 80
print(per.name,per.age,per.height,per.weight)
# 返回值:Thomas 18 160 80

 

5. 访问类的方法:

  格式:

    对象名.方法

  赋值:

    对象名.方法(参数列表)

per.openDoor()
# 我已经打开了冰箱门
per.fillEle()
# 我已经把大象装进冰箱了
per.closeDoor()
# 我已经关闭了冰箱门

# 带参数的方法访问
per.eat("apple")
# eat apple

 

总结:

  这样我们把在Python下面一个最基本的类的设计、建造、访问属性、访问方法介绍完了。后面根据类的需求和特点进行详细的分析。

 

posted @ 2019-05-13 18:19  时海涛|Thomas  阅读(325)  评论(0编辑  收藏  举报