面向对象【林老师版】:__init__定制自己独有的特征(三)

本节内容

1、是如何产生对象

2、实例化的步骤

3、类即类型

一、是如何产生对象?

__init__方法用来为对象定制对象自己独有的特征

1、stu1=LuffyStudent()调用报错

1、代码

class LuffyStudent:
    school='luffycity'

    #            stu1, '王二丫', '女', 18
    def __init__(self,name,sex,age):
        self.Name=name
        self.Sex=sex
        self.Age=age

    def learn(self):
        print('is learning')

    def eat(self):
        print('is sleeping')


#后产生对象
stu1=LuffyStudent()

 2、输出

Traceback (most recent call last):
  File "F:/s13/day07/4 __init__方法.py", line 23, in <module>
    stu1=LuffyStudent() 
TypeError: __init__() missing 3 required positional arguments: 'name', 'sex', and 'age

意思是么有找到'name', 'sex', and 'age参数

2、stu1=LuffyStudent('王二丫','女',18)调用成功

1、代码

#__init__方法用来为对象定制对象自己独有的特征
class LuffyStudent:
    school='luffycity'

    #            stu1, '王二丫', '女', 18
    def __init__(self,name,sex,age):
        self.Name=name
        self.Sex=sex
        self.Age=age

    def learn(self):
        print('is learning')

    def eat(self):
        print('is sleeping')

#后产生对象
stu1=LuffyStudent('王二丫','女',18) #LuffyStudent.__init__(stu1,'王二丫','女',18)
print(stu1.__dict__)

2、输出

{'Sex': '女', 'Age': 18, 'Name': '王二丫'}

二、__init__方法后,实例化的步骤

1、先产生一个空对象stu1

1、代码

def __init__(self,name,sex,age):
        self.Name=name
        self.Sex=sex
        self.Age=age

        #stu1.Name='王二丫'
        #stu1.Sex='女'
        #stu1.Age=18
stu1=LuffyStudent('王二丫','女',18) #LuffyStudent.__init__(stu1,'王二丫','女',18)
print(LuffyStudent.__init__)

2、输出

<function LuffyStudent.__init__ at 0x0000000001101378>

2、LuffyStudent.__init__(stu1,'王二丫','女',18)

1、原理图

2、源代码

#后产生对象
stu1=LuffyStudent('王二丫','女',18) #LuffyStudent.__init__(stu1,'王二丫','女',18)
print(stu1.__dict__)

3、输出

{'Name': '王二丫', 'Sex': '女', 'Age': 18}

三、类即类型

python一切皆对象,在python3里统一类类与类型的概念

1、类型list就是类list

1、代码

print(type([1,2]))
print(list)

2、输出

<class 'list'>
<class 'list'>

2、实例化的到4个对象l1,l2,l3,l4

>>> l1=list()
>>> l2=list()
>>> l3=list()
>>> l4=list()

3、三个对象都有绑定方法append,是相同的功能,但内存地址不同

>>> l1.append
<built-in method append of list object at 0x000000000227E348>
>>> l2.append
<built-in method append of list object at 0x000000000227C4C8>
>>> l3.append
<built-in method append of list object at 0x000000000227C508>
>>> l4.append
<built-in method append of list object at 0x000000000227C548>

4、操作绑定方法l1.append(3),就是在往l1添加3,绝对不会将3添加到l2或l3

>>> l1.append(3)
>>> l1
[3]
>>> l2
[]
>>> l3
[]
>>> l4
[]

5、调用类list.append(l3,111)等同于l3.append(111)

>>> list.append(l3,111)
>>> l3
[111]

posted @ 2018-11-06 15:11  活的潇洒80  阅读(263)  评论(0)    收藏  举报