• 初识Python类


    吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼。

    类的语法

    class Person(object):
        print("learning class")
    test = Person()
    #test就是类Person的实例化对象
    #实例化,就是以Person类为模板,在内存里开辟一块空间,存上

    然后想加点东西,是谁在学习类。

    class Person(object):
        def __init__(self,name):
            self.name = name
        def learng(self):
            print(self.name,"is learning class")
    test = Person("Jhon")
    test.learng() #类实例化后就可以调用类中的方法了
    #test就是类Person的实例化对象
    #实例化,就是以Person类为模板,在内存里开辟一块空间,存上数据,赋值成一个变量名
    

    为什么会有__init__?为什么有self? what happend?看下面代码

    class Person(object):
        def __init__(self,name):
            self.name = name
        def learng(self):
            print(self.name,"is learning class")
    print(Person)
    # test = Person("Jhon")
    # test.learng() #类实例化后就可以调用类中的方法了
    #test就是类Person的实例化对象
    #实例化,就是以Person类为模板,在内存里开辟一块空间,存上数据,赋值成一个变量名
    

    打印结果如下:

    <class '__main__.Person'>
    

    这说明即使类不实例化,这个Person类本身也是已经存在内存里的。如果实例化了?会有什么反应了?

    根据图我们得知,其实self就是实例本身!实例化python会自动把这个实例本身通过self参数传进去。

    趁热打铁,接下来分解一下下面代码分别是什么意思

    class Role(object): #定义一个类, class是定义类的语法,Role是类名,(object)是新式类的写法,必须这样写,以后再讲为什么
        def __init__(self,name,role,weapon,life_value=100,money=15000): #初始化函数,在生成一个角色时要初始化的一些属性就填写在这里
            self.name = name #__init__中的第一个参数self,和这里的self都 是什么意思? 看下面解释
            self.role = role
            self.weapon = weapon
            self.life_value = life_value
            self.money = money
    

      上面的这个__init__()叫做初始化方法(或构造方法),在类被调用时,这个方法会自动执行,进行一些初始化的动作,所以我们这里写的__init__(self,name,role,weapon,life_value=100,money=15000)就是要在创建一个角色时给它设置这些属性,那第一个self是干毛用的呢?

    初始化一个角色,就需要调用类一次:

    r1 = Role('Alex','police','AK47’) #生成一个角色 , 会自动把参数传给Role下面的__init__(...)方法
    r2 = Role('Jack','terrorist','B22’)  #生成一个角色
    

    未完待续。。。。

  • 相关阅读:
    java ppt4
    课后作业 2
    课后作业2
    java ppt题目
    CommandParameter设计
    《大道至简》第二章读后感
    8.多态
    7.接口与继承
    6.数组
    字符串
  • 原文地址:https://www.cnblogs.com/uglyliu/p/6093459.html
Copyright © 2020-2023  润新知